Docker compose, es la herramienta de docker que nos simplifica la vida para desplegar stacks. Podemos definir mediante ficheros yaml, la estructura de docker que queremos desplegar y una vez hecho esto ejecutarlo. El concepto es parecido a un dockerfile pero orientado a stacks en vez de a imágenes. Con esto podemos crear una infraestructura de docker muy fácilmente en cosa de segundos. Además, podemos luego controlar todo el stack con esta herramienta.
Actualmente, la ultima versión de docker-compose es la 3.3 y hace referencia a docker 17.06
Instalación
Descargar docker compose
1 |
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
Dar permisos de ejecución
1 |
chmod +x /usr/local/bin/docker-compose |
Primeros pasos
Para hacer el ejemplo de un docker compose, vamos a desplegar un zabbix.
Lo primero que hay que hacer es crear una carpeta para el proyecto. En este caso vamos a desplegar un sistema de monitorización con la herramienta zabbix a modo de ejemplo.
1 |
mkdir zabbix |
Una vez hecha la carpeta, crear el docker-compose
1 |
vim docker-compose.yml |
Nota: muy importante, la sintaxis yaml no acepta tabulaciones
Ejemplo de docker-compose:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
version: '3' services: zabbix-db: image: monitoringartist/zabbix-db-mariadb container_name: zabbix-db hostname: zabbix-db restart: always volumes: - zabbix-db-storage:/var/lib/mysql - backups:/backups - /etc/localtime:/etc/localtime:ro environment: - MARIADB_USER=zabbix - MARIADB_PASS=zabbix zabbix-server: image: monitoringartist/zabbix-xxl container_name: zabbix-server hostname: zabbix-server restart: always ports: - "80:80" - "10051:10051" volumes: - /etc/localtime:/etc/localtime:ro links: - zabbix-db:zabbix.db environment: - ZS_DBHost=zabbix.db - ZS_DBUser=zabbix - ZS_DBPassword=zabbix volumes: zabbix-db-storage: driver: local backups: driver: local |
Cosas a tener en cuenta:
1 2 3 4 5 6 7 8 |
image: imagen de docker que se va a utilizar volumes: son los volumenes que se van a pasar al docker environment: las variables de entorno ports: puertos mapeados links: para indicar las referencias contra otro docker container_name: Nombre para el docker hostname: nombre del docker restart: para que se reinicie automáticamente cuando se cae |
Comprobar la sintaxis
1 |
docker-compose config |
Una vez comprobado el docker-compose, solo falta iniciarlo. Para ello:
1 |
docker-compose up -d |
En el caso de que se quisiese levantar un docker-compose con otro nombre, hay que hacerlo de la siguiente manera:
1 |
docker-compose -f <docker-compose_file> up -d |
De este modo se iniciará en modo demonio y levantará todo el zabbix automáticamente. Para comprobar que está bien levantado
1 |
docker-compose ps |
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------------------------------------------------------- zabbix-db /run.sh Up 3306/tcp zabbix-server /config/bootstrap.sh Up 0.0.0.0:10051->10051/tcp, 10052/tcp, 162/udp, 0.0.0.0:80->80/tcp |
Si se quisiese parar/arrancar sería con los comandos
1 |
docker-compose stop |
1 |
docker-compose start |
También se pueden ver los logs de los contenedores
1 |
docker-compose logs |
Y si se quieren ver en vivo
1 |
docker-compose logs -f |
Para ver de un docker en concreto
1 |
docker-compose logs <nombre_docker> |
Una vez desplegado el docker, podemos ver que tiene mapeado el puerto 80 al de nuestro host. Para acceder la panel web:
1 |
http://<ip_host> |
admin / zabbix
Mas info:
2 comments