Docker Compose es un programa simple de Python que ayuda a implementar fácilmente varios contenedores acoplables en un servidor.
Utiliza un archivo YAML simple para la descripción del servicio.
En lugar del largo docker run . . .
líneas, puede usar docker-compose up -d
para implementar múltiples servicios a la vez.
En este tutorial, le mostraré cómo instalar Docker Compose en el servidor CentOS. También le mostraré un ejemplo rápido del uso de Docker Compose para implementar un servidor NGINX con una configuración específica.
Instalando docker-compose en CentOS
Necesita Docker instalado de antemano. Asegúrese de instalar Docker en su sistema CentOS antes de instalar Docker Compose.
docker-compose no está empaquetado en los repositorios oficiales de CentOS ni en el repositorio rpm de docker.
Hay dos formas de instalar Docker Compose en Linux:
- Descargue los archivos de instalación de Docker Compose Linux y configúrelo manualmente
- Use PIP para instalar Docker Compose fácilmente
Personalmente, prefiero usar PIP para instalar Docker Compose. Dado que Docker Compose es básicamente una aplicación de Python, tiene sentido usar PIP para instalarlo.
Veamos cómo hacerlo.
Instalar pip3
Instale pip3 usando el siguiente comando:
sudo dnf install python3-pip
Instalar docker-compose usando pip3
Usa pip para instalar docker-compose
pip3 install --user docker-compose
Actualizar RUTA
pip instala docker-compose en ~/.local/bin
directorio. Deberá agregarlo a la variable de entorno PATH para poder ejecutarlo desde cualquier lugar:
echo 'PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
Si estás usando zsh
, cambie .bashrc
a .zshrc
.
Una vez que haya terminado, use el comando fuente source ~/.bashrc
o vuelva a abrir la terminal (cierre sesión y vuelva a iniciar sesión si es un servidor).
Confirme que docker-compose está instalado usando el siguiente comando:
[email protected]:~$ docker-compose --version
docker-compose version 1.26.2, build unknown
¡Felicidades! Ahora tiene docker-compose instalado en su servidor CentOS 8.
¿Quieres probarlo? Siga este sencillo tutorial y aprenda a usar Docker Compose.
Implemente un servidor nginx de muestra usando docker-compose
Nginx es uno de los servidores web más populares, se implementa fácilmente a través de Docker.
Comparemos la forma de redacción y la forma sin redacción
Implementar Nginx sin Docker Compose
Puedes usar run
comando para implementar fácilmente un servidor nginx como este:
docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest
Aquí, implementó un servidor nginx, con un nombre de contenedor "servidor", usando una red externa "red", montó un volumen llamado "html", usando un archivo de configuración personalizado y escuchando en el puerto 80 en el host, que reiniciar automáticamente en caso de falla.
Repasemos los problemas aquí:
Tendrás que crear las redes y los volúmenes de antemano
Docker no creará automáticamente la red y el volumen. Tendrás que crearlos de antemano.
Demasiadas opciones para escribir cada vez
Hay demasiadas opciones para escribir. Si se trata de un contenedor más complicado, como un contenedor de base de datos, un contenedor de proxy inverso o un contenedor de nextcloud, estas opciones aumentarán.
Entorno de desarrollo
¿Qué sucede si está probando su compilación y no desea conservar el volumen después de detener el contenedor? Tendrá que eliminar manualmente el volumen y la red después.
Implementar Nginx con Docker Compose
Primero, tendrás que crear un archivo de redacción.
Cree un directorio llamado "nginx-compose" y cd en él:
mkdir nginx-compose && cd nginx-compose
Cree un archivo llamado "docker-compose.yml" y agregue las siguientes líneas
version: "3.3"
services:
server:
image : "nginx:latest"
container_name: "server"
volumes:
- "html:/usr/share/nginx/html"
- "./custom-config.conf:/etc/nginx/nginx.conf"
networks:
- "net"
ports:
- "80:80"
restart: "on-failure"
volumes:
html:
networks:
net:
Este archivo de composición describe un servicio llamado server
, eso implementará un servidor nginx con exactamente las mismas configuraciones que hicimos en la forma sin composición. Implementarlo usando:
docker-compose up -d
docker-compose buscará en el directorio actual un archivo llamado "docker-compose.yml", lo analizará e implementará los servicios definidos en él.
Repasemos los problemas del método sin composición ahora con el método de composición:
- No es necesario crear las redes y los volúmenes de antemano, docker-compose lo hace por usted. Puede agregar volúmenes externos estableciendo externo en verdadero en cada volumen/red.
- Una vez que haya escrito el archivo .yaml, ya no tendrá que escribir comandos masivos. Puede copiar este archivo a cualquier otro servidor que tenga instalada una versión reciente de docker-compose y se ejecutará como se esperaba con facilidad.
- Puede usar
docker-compose down -v
comando para detener y eliminar no solo los contenedores, sino también todas las redes y volúmenes que creó docker-compose. Esto ayuda a limpiar en un entorno de desarrollo/prueba.
Hay muchos otros beneficios al usar docker-compose sobre docker run
, especialmente en la producción, que está fuera del alcance del artículo de hoy.
Si quieres ver algo así, házmelo saber en la sección de comentarios a continuación. Esté atento a nuestra serie docker para obtener más guías como estas.