Siguiendo con los tutoriales sobre Docker, os voy a explicar cómo podemos ejecutar un comando dentro de un contenedor de Docker y utilizando la consola de Ubuntu.
Si tenemos este Docker Compose de ejemplo cogido del tutorial Desplegar servidor web Apache con PHP utilizando Docker Compose
version: "3" #Indicamos la version docker compose que utilizamos #Y luego los servicios que vamos a implementar services: #Aquí indicamos el nombre que queramos mi_servicio_apache: #Imagen de APACHE con PHP image: php:7.0-apache container_name: apache-container volumes: #Carpeta donde guardaremos los archivos web : carpeta interna de Docker - ./www/:/var/www/html expose: #Puerto que queremos exponer a para poder compartirlo con otros contenedores - 80 ports: # Puerto de nuestra máquina : puerto dentro de Docker (siempre va a ser el 80 para apache o 443 para SSL) - 80:80
Con este comando podremos ejecutar cualquier comando dentro de un contenedor Docker
sudo docker exec apache-container service apache2 reload
El comando funciona de la siguiente forma, primero ponemos Docker exec y a continuación ponemos el nombre del contenedor Docker Compose. El nombre del contenedor lo indicamos en el campo container_name: apache-container dentro de nuestro archivo docker-compose.yml . En este ejemplo estoy reiniciando apache2, pero podemos incluso instalar o actualizar paquetes dentro del contenedor.
Si lo que queremos es copiar archivos desde la máquina al contenedor Docker, tenemos que poner el siguiente comando.
sudo docker cp /index.html apache-container:/var/www/html/index.html
En este ejemplo, copiamos un archivo llamado index.html qué está en nuestra máquina en la raíz dónde ejecutamos este comando a la carpeta de var/www/html/index.html dentro del contenedor apache-container de nuestro Docker Compose.
Y si queremos hacer el proceso inverso ponemos lo siguiente
sudo docker cp apache-container:/index.html /var/www/html/index.html
En este caso copiamos el archivo en raíz de la ruta del contenedor (con ls podemos ver la ruta) al directorio /var/www/html/ de nuestra máquina.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.