Ejecutar un comando en un contenedor de Docker Compose usando la consola de Ubuntu

Tiempo de lectura: 2 minutos

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.

Deja un comentario