
Hoy vamos a hablar del orquestador de Docker y aprender a crear nuestro primer ficher de docker-compose. Si aun no conoces Docker, en esta publicación lo explico y doy unas sencillas pautas para comenzar con él.
Un poco de teoría
Docker-Compose es una herramienta que se instala aparte de Docker y que nos permite realizar "recetas" para levantar varios contenedores con la posibilidad de que estén conectados entre sí de una forma bastante sencilla, entre otras cosas que veremos. Simplemente bastará con crear un archivo llamado docker-compose.yml (en los casos mas sencillos).
Instalando docker-compose
Esto es bastante sencillo, solo tendremos que hacer uso de los siguientes comandos:
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Primera configuración
Como antes comentamos, solo tenemos que crear un fichero llamado docker-compose.yml donde queramos, escribir las ordenes para levantar los contenedores y finalmente ejecutarlo. Voy a poner un ejemplo de configuración en el que podamos ver mas o menos gran parte de las posibilidades:
version: '3'
services:
nagios:
image: jasonrivers/nagios:latest
hostname: nagios
container_name: nagios
volumes:
- "./path-to-nagios/etc/:/opt/nagios/etc/"
- "./path-to-nagios/var:/opt/nagios/var/"
- "./path-to-custom-plugins:/opt/Custom-Nagios-Plugins"
- "./path-to-nagiosgraph-var:/opt/nagiosgraph/var"
- "./path-to-nagiosgraph-etc:/opt/nagiosgraph/etc"
ports:
- "8080:80"
networks:
frontend:
ipv4_address: 172.20.0.5
nginx:
image: nginx
hostname: web
container_name: web
links:
- mysql
volumes:
- ./web1:/usr/share/nginx/html
- ./default.conf:/etc/nginx/conf.d/default.conf
networks:
frontend:
ipv4_address: 172.20.0.6
mysql:
image: mysql
hostname: database
container_name: database
networks:
frontend:
ipv4_address: 172.20.0.7
networks:
frontend:
ipam:
config:
- subnet: 172.20.0.0/24
Vamos a comenzar por las dos primeras instrucciones casi religiosas, la versión que usaremos y la cabecera de los servicios. A partir de ahí vienen los contenedores: Nagios, Nginx y MSQL. Dentro de cada servicio tenemos:image: Nombre de la imagen local u online (Dockerhub)Al final del todo, fuera de los servicios, tenemos una configuración general sobre la red. Ya que si no la nombramos nos dará problemas con los contenedores. Obviamente la configuración de ese fichero podría complicarte muchísimo más para cosas mas concretas, pero tampoco era la intención.
hostname: Nombre de la "maquina"
container_name: Nombre del contenedor
links: Conectar contenedores
ports: Redirección de puertos "anfitrión:contenedor"
volumes: Carpetas compartidas con el contenedor en formato "anfitrión:contenedor"
networks: Configuración de red como dirección IP
También hay que plantearse cuando compensa complicarse y cuando no. Si ya existe una imagen que reúne todos los servicios LAMP, para que montar varios contenedores interconectados (Apache, MSQL, PHP...) pudiendo levantar uno solo que ya reúna todas las herramientas, como este caso.
Esto a sido todo, cualquier duda la dejáis en los comentarios y tratare de resolverla.
Fuente: https://docs.docker.com/compose/compose-file
0 comentarios:
Publicar un comentario