Modificación de archivos en un contenedor en ejecución
En este paso, aprenderemos cómo modificar archivos dentro de un contenedor en ejecución. Esto puede ser útil para propósitos de depuración, como cambiar archivos de configuración o agregar scripts temporales a un contenedor que ya está en funcionamiento.
Comenzaremos ejecutando un contenedor simple basado en la imagen ubuntu
, que es más completa que alpine
e incluye un shell y utilidades comunes.
docker run -d --name my-ubuntu ubuntu sleep 3600
Este comando ejecuta un contenedor Ubuntu en modo desacoplado (-d
) y lo mantiene en ejecución durante una hora usando el comando sleep 3600
. Hemos nombrado el contenedor my-ubuntu
para facilitar su referencia.
Ahora, usemos docker exec
para obtener un shell dentro del contenedor en ejecución.
docker exec -it my-ubuntu /bin/bash
Ahora deberías estar dentro del shell bash del contenedor my-ubuntu
. El prompt cambiará para reflejar que estás dentro del contenedor.
Dentro del contenedor, creemos un nuevo archivo en el directorio /tmp
.
echo "This is a test file." > /tmp/test_file.txt
Ahora, verifiquemos que el archivo fue creado y contiene el contenido correcto.
cat /tmp/test_file.txt
Deberías ver la salida This is a test file.
. Esto confirma que pudimos crear y escribir en un archivo dentro del contenedor en ejecución.
Para salir del shell del contenedor, simplemente escribe exit
.
exit
Ahora estás de vuelta en la terminal de tu VM LabEx.
También podemos copiar archivos hacia y desde un contenedor en ejecución usando el comando docker cp
. Creemos un archivo en nuestra VM LabEx y copiémoslo al contenedor.
Primero, crea un archivo llamado local_file.txt
en tu directorio ~/project
.
echo "This file is from the host." > ~/project/local_file.txt
Ahora, copia este archivo al directorio /tmp
del contenedor my-ubuntu
.
docker cp ~/project/local_file.txt my-ubuntu:/tmp/
El formato para docker cp
es docker cp <ruta_origen> <nombre_contenedor>:<ruta_destino>
o docker cp <nombre_contenedor>:<ruta_origen> <ruta_destino>
.
Verifiquemos que el archivo fue copiado al contenedor. Vuelve al shell del contenedor.
docker exec -it my-ubuntu /bin/bash
Dentro del contenedor, verifica la presencia de local_file.txt
en /tmp
.
ls /tmp/
Deberías ver local_file.txt
listado junto con test_file.txt
.
Ahora, veamos el contenido de local_file.txt
dentro del contenedor.
cat /tmp/local_file.txt
Deberías ver la salida This file is from the host.
.
Sal del shell del contenedor nuevamente.
exit
Finalmente, limpiemos el contenedor.
docker stop my-ubuntu
docker rm my-ubuntu
Este paso demostró cómo modificar archivos dentro de un contenedor en ejecución usando docker exec
para obtener un shell y comandos Linux estándar, y cómo copiar archivos entre el host y el contenedor usando docker cp
.