Docker: Docker-Compose

Ismael Chasco
Jun 7, 2017 · 3 min read

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.

Instalación

Descargar docker compose

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

Dar permisos de ejecución

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.

mkdir zabbix

Una vez hecha la carpeta, crear el docker-compose

vim docker-compose.yml

Nota: muy importante, la sintaxis yaml no acepta tabulaciones

Ejemplo de docker-compose:

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:

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

docker-compose config

Una vez comprobado el docker-compose, solo falta iniciarlo. Para ello:

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:

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

docker-compose psName         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

docker-compose stopdocker-compose start

También se pueden ver los logs de los contenedores

docker-compose logs

Y si se quieren ver en vivo

docker-compose logs -f

Para ver de un docker en concreto

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:

http://<ip_host>

admin / zabbix

Mas info:


Originally published at blog.ichasco.com.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade