La dockerización ha redefinido el proceso de despliegue y automatización en la industria del software. Desde su creación, el Docker equipo se ha esforzado continuamente por hacer que el despliegue automatizado sea fluido. La tecnología de contenedorización no solo permite un desarrollo rápido de aplicaciones y eficiencia, sino que también ahorra tiempo y esfuerzos extenuantes. Funcionalidades insuperables como la orquestación, definición y ejecución de aplicaciones multi-contenedor juntas hacen de Docker una opción favorita para los desarrolladores.
Contenedores e imágenes de Docker
A medida que se sumerge para comprender mejor Docker, es esencial repasar los conceptos básicos. Comprender cómo funciona Docker puede ser complicado si no tiene experiencia trabajando con él. En esta sección, vamos a definir algunos conceptos que son esenciales para principiantes. Si cree que está familiarizado con estos conceptos, no dude en omitirlos y avanzar a la siguiente sección. También puede echar un vistazo a nuestra guía completa que explica los conceptos fundamentales de Docker.
-
Imágenes de Docker
Las imágenes de Docker son una colección de archivos de solo lectura. Una vez que crea imágenes de Docker, no puede modificarlas, aunque permite su eliminación. Usamos una imagen de Docker para crear uno o más contenedores de Docker según nuestras necesidades. Para verificar la cantidad de imágenes que se ejecutan en su sistema, use el comando:
|
1 |
$docker images |
Cuando descarga imágenes de un registro remoto como Docker Hub, está descargando archivos y carpetas. Para descargar una imagen, use el comando:
|
1 |
$docker pull (nombre de la imagen) |
-
Contenedores de Docker
Las imágenes de Docker son el plano de los contenedores de Docker. Técnicamente, un contenedor de Docker es una instancia de una imagen de Docker. Imagine que, si una imagen de Docker es como un padre, entonces un contenedor de Docker es el hijo. A diferencia de las imágenes de Docker que puede crear una vez, puede crear múltiples contenedores usando una sola imagen. Para verificar la lista de imágenes que se ejecutan en su sistema, use el comando:
|
1 |
$docker ps |
Para descargar un contenedor, use el siguiente comando:
|
1 |
$docker pull (nombre de el contenedor) |
-
Cómo funcionan las imágenes y los contenedores de Docker
Las imágenes y los contenedores de Docker trabajan de la mano para liberar el potencial de Docker. Se construye un solo contenedor utilizando la imagen de Docker a través del comando run. Cuando crea un contenedor de Docker, se crea una nueva capa conocida como Capa de Contenedor (Container Layer). La capa recién creada contiene la aplicación y sus dependencias. Cada contenedor que crea tiene una Capa de Contenedor de lectura/escritura diferente, y cualquier cambio realizado en el contenedor de Docker se refleja automáticamente en la Capa de Contenedor. Recuerde, si decide eliminar un contenedor, también perderá la Capa de Contenedor.
Diga hola a Docker Compose
Docker Compose es una herramienta de gestión de contenedores que le permite configurar y orquestar todos sus contenedores de Docker en un solo archivo YAML . Iniciar, detener y crear enlaces y volúmenes entre contenedores es más fácil con esta herramienta.
-
¿Qué hace Docker Compose?
En pocas palabras, Docker Compose facilita las tareas complicadas al eliminar conflictos y problemas organizativos. Permite a los usuarios gestionar diferentes contenedores de Docker de forma centralizada. En otras palabras, en lugar de tener todos los servicios en un contenedor grande, Docker Compose divide un servicio en múltiples servicios para que los usuarios puedan acceder a ellos y gestionarlos sin esfuerzo.
En esta guía, lo guiaremos a través de los pasos para instalar la versión actual de Docker Compose para administrar aplicaciones multi-contenedor en CentOS 7. También repasaremos algunos comandos básicos que necesita para usar con éxito el software.
-
Cómo usar Docker Compose
Usar Docker Compose es extremadamente fácil, incluso para principiantes. Veamos el proceso de tres pasos involucrado en Docker Compose:
1. Construir: Primero, construya las imágenes en el Dockerfile según las necesidades de su proyecto, o tal vez descárguelas del registro.
2. Definir: A continuación, debe definir todos los servicios de componentes en el archivo compose.yml.
3. Ejecutar: Después de definir los componentes, es hora de ejecutarlos usando el comando docker-compose.
Requisitos previos
Antes de avanzar con la instalación de Docker Compose en su servidor CentOS, asegúrese de tener:
- Un usuario no raíz con acceso sudo en un servidor CentOS 7.
- Docker instalado en su máquina. Consulte este tutorial sobre cómo instalar y operar Docker en Ubuntu 18.04.
Ya está todo listo. A continuación, siga los pasos que se indican abajo para instalar Docker Compose en CentOS 7.
Paso 1: Instalación de Docker Compose
Para obtener la versión más reciente de Docker Compose, siga las instrucciones de la documentación de Docker y descargue los binarios desde el repositorio de GitHub de Docker. Verifique que tiene la última versión del software ejecutando el siguiente comando:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Para hacer que el binario se ejecute, configure los siguientes permisos:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
A continuación, busque su versión para verificar si la instalación fue exitosa:
|
1 |
$docker-compose --version |
El siguiente código imprimirá la versión instalada:
Luego puede ejecutar un ejemplo de “Hello World” utilizando el Docker Compose que ha instalado.
Paso 2: Uso de Docker Compose para ejecutar un contenedor
Hay una imagen de “Hello World” en Docker Hub, el registro público de Docker, que se puede utilizar para demostración y pruebas. Muestra cómo ejecutar un contenedor utilizando Docker Compose con la configuración mínima. Primero, debe crear un directorio para nuestro archivo YAML:
|
1 |
$mkdir hello-world |
A continuación, muévase a este directorio:
|
1 |
$cd hello-world |
Luego, utilizando su editor de texto preferido, genere el archivo YAML. En este tutorial, utilizaremos Vi:
|
1 |
$vi docker-compose.yml |
Presione i para entrar al modo de inserción, luego escriba esto en el archivo:
|
1 2 |
my-test: image: hello-world |
En el nombre del contenedor, se incorporará la primera línea. La segunda línea le indica al programa qué imagen debe usar para crear el contenedor. docker-composeup buscará una imagen local con el nombre hello-world para verificar si está disponible cuando escriba el comando. Para salir del modo de inserción, presione ESC. Luego, ingrese :x y presione ENTER para guardar y salir del archivo. El comando docker images se puede utilizar para verificar manualmente las imágenes en su máquina:
|
1 |
$ sudo docker images |
Solo aparecen los encabezados de las columnas cuando no hay ninguna imagen local:
Para crear el contenedor, ejecute este comando mientras aún se encuentra en el directorio /hello-world:
|
1 |
$sudo docker-compose up |
Cuando ejecuta el comando por primera vez y no hay una imagen local llamada hello-world, se descargará desde el repositorio de Docker Hub:
Para garantizar que la instalación funcione, Docker Compose extrae la imagen, compila un contenedor, lo conecta y ejecuta el programa hello :
Después de eso, se muestra una impresión de la descripción de lo que se hizo:
Cuando hello complete su tarea, el contenedor se apagará y el comando ya no se ejecutará en el contenedor. Se mostrarán los encabezados de las columnas al mirar los procesos activos. Sin embargo, el contenedor hello-world no aparecerá en la lista porque actualmente no está en funcionamiento:
|
1 |
$sudo docker ps |
Para ver todos los contenedores, no solo los actuales, use la bandera -a :
|
1 |
$sudo docker ps -a |
Ahora que ha intentado ejecutar un contenedor, puede continuar para aprender algunos de los comandos fundamentales de Docker Compose.
Paso 3: Comandos de Docker Compose
Para comenzar con Docker Compose, esta sección repasará los comandos básicos proporcionados por la herramienta docker-compose. docker-compose es un comando que funciona directorio por directorio. Al generar un directorio para cada contenedor y un archivo docker-compose.yml por directorio, puede ejecutar muchos grupos de contenedores de Docker en la misma computadora.
Hasta ahora, ha estado ejecutando Docker Compose por su cuenta. Puede apagarlo presionando Ctrl-C. Esto permite que la ventana de la terminal muestre mensajes de depuración. Sin embargo, es recomendable ejecutar docker-compose como un servicio cuando se opera en producción. La opción -d se puede utilizar como una forma sencilla de lograr esto:
|
1 |
docker-compose up -d |
Ahora, docker-compose se bifurca a segundo plano. Su grupo de contenedores Docker (ya sea detenidos o en ejecución) se puede administrar con el siguiente comando:
|
1 |
$sudo docker-compose ps -a |
El Estado de un contenedor se informará como Exited si está detenido, como se ve en el ejemplo de abajo:
Un contenedor que se está ejecutando actualmente mostrará:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Puede terminar todos los contenedores Docker en ejecución en el mismo directorio que el archivo docker-compose.yml que utilizó para iniciar el grupo de Docker:
|
1 |
$docker-compose stop |
Nota: Si necesita apagar las cosas de manera más forzada, docker-compose kill también está disponible.
En algunos casos, los contenedores Docker pueden guardar sus datos antiguos en su interior. Utilice el comando rm para eliminar todos los contenedores de su grupo de contenedores si desea comenzar desde cero:
|
1 |
$docker-compose rm |
Ejecutar cualquiera de estos comandos desde otro directorio que no sea aquel donde se encuentran el contenedor Docker y el archivo .yml resultará en un mensaje de error:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory o any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
En esta sección, hemos cubierto los conceptos básicos de la manipulación de contenedores con Docker Compose. Como se discutió, en la siguiente sección puede acceder al sistema de archivos de Docker y ejecutar comandos desde un símbolo del sistema dentro del contenedor si necesita control adicional sobre sus contenedores.
Paso 4: Acceder al sistema de archivos del contenedor Docker
Es posible ejecutar un símbolo del sistema en un contenedor y acceder al sistema de archivos del contenedor utilizando docker exec, que es una herramienta de línea de comandos. Como ejemplo, ejecute “Hello World” y vea cuánto tiempo tarda en completarse el comando docker exec. Para los fines de este tutorial, se puede utilizar la imagen de Nginx de Docker Hub. Cree un nuevo directorio llamado nginx y acceda a él:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Ahora debería tener un archivo docker-compose.yml, que puede abrir en un editor de texto:
|
1 |
vi docker-compose.yml |
Luego, en el archivo, agregue lo siguiente:
|
1 2 |
nginx: image: nginx |
Es hora de cerrar la aplicación. Para iniciar el contenedor Nginx en segundo plano, use el siguiente comando:
|
1 |
$sudo docker-compose up -d |
Docker Compose descargará la imagen de Nginx y ejecutará el contenedor en segundo plano. Para continuar, deberá ingresar el CONTAINER ID. Puede ver todos los contenedores que se están ejecutando actualmente con el siguiente comando:
|
1 |
$sudo docker ps |
Verá lo siguiente:
Si desea modificar el sistema de archivos dentro de este contenedor, utilizando docker exec, usaría el ID único del contenedor (en este caso, f139d0d78ca7) para crear un shell dentro del contenedor:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Se puede abrir una terminal interactiva utilizando la opción -t, mientras que /bin/bash proporciona al contenedor un shell bash. Este es el símbolo del sistema bash que verá para el contenedor después de eso:
|
1 |
root@b86b6699714c:/# |
Dentro de su contenedor, encontrará un símbolo del sistema. Reiniciar el contenedor sobrescribirá cualquier cambio que haya realizado a menos que esté trabajando en un directorio que se haya guardado como parte de un volumen de datos. Si está acostumbrado a trabajar con las utilidades de línea de comandos de Linux, debe saber que la mayoría de las imágenes de Docker se producen utilizando las instalaciones de Linux más básicas.
Conclusión
Le hemos guiado a través de los pasos para instalar la versión actual de Docker Compose para administrar aplicaciones de múltiples contenedores en CentOS 7. La capacidad de Docker Compose para iniciar y apagar simultáneamente una gran cantidad de contenedores es impresionante. Pasar de plantillas a aplicaciones toma minutos. Por lo tanto, si su trabajo implica ejecutar múltiples contenedores a la vez, seguir usando Docker Compose es una excelente opción. Sin embargo, no es una solución única para todos. También puede encontrar algunas opciones mejores, dependiendo de sus necesidades particulares, por ejemplo, Kubernetes.
Para explorar más a fondo el poder de Docker Compose, puede consultar estos tutoriales de nuestro blog:
- Despliegue de Laravel, Nginx y MySQL con Docker Compose
- Cómo instalar y configurar Docker Compose en Ubuntu 20.04
¡Feliz informática!






Comentarios
Aún no hay comentarios. Sea el primero.