0% encontró este documento útil (0 votos)
11 vistas5 páginas

Docker Compose

Docker Compose permite gestionar múltiples contenedores de manera más sencilla y organizada mediante un archivo YAML. Facilita la creación de entornos aislados, la utilización de volúmenes persistentes y la exportación de variables, aunque no está diseñado para producción. La instalación y ejecución de servicios se realiza con comandos simples, y se puede verificar el estado de los contenedores y eliminarlos fácilmente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas5 páginas

Docker Compose

Docker Compose permite gestionar múltiples contenedores de manera más sencilla y organizada mediante un archivo YAML. Facilita la creación de entornos aislados, la utilización de volúmenes persistentes y la exportación de variables, aunque no está diseñado para producción. La instalación y ejecución de servicios se realiza con comandos simples, y se puede verificar el estado de los contenedores y eliminarlos fácilmente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Docker compose:

La teoría:

Vimos que con el verbo build de Docker, podríamos crear imágenes a través de nuestro Docker
engine.

Pero cuando Docker fue creciendo, y la misma comunidad le reclamaba que se quedaban
“cortos” manejando todo por separado, nace Docker-compose.

Docker compose tiende a flexibilixar la definición cuando se trabaja con mas de un


contenedor, y las definiciones de Docker compose se hacen en un formato amigable, que es un
fichero yaml , el mismo que utilizamos para definiciones de ansible, de kubernetes y de
openstack.

Dentro de la plantilla de Docker compose, se encontrarán los siguientes valores

a) Volúmenes a usar
b) Variables de entorno a ser pasadas al momentos de ejecución
c) La lista de imágenes que vamos a usar para correr nuestros contenedores
d) La ruta a nuestros archivos dockerfiles
e) Los puertos que vamos a exponer en nuestro contenedor
f) Las redes que vamos a crear en nuestros contenedores aislados

Compose me soluciona

1) Tener un fichero unificado cuando trabajo con mas de un contenedor


2) Mantener un entorno aislado cuando corren entre ellos
3) Utilizar volúmenes persistentes de una manera sencilla
4) Simplicidad al momento de generar cambios
5) Simplicidad al momento de exportar variables

Compose no me soluciona:

1) No está pensado para entornos de producción , para ello, la solución de Docker es


Docker swarm, o mejor aún, kubernetes/openshift

Como estamos hablando de dockers, la solución que ellos proponen ( Pero que
personalmente a mi no me gusta), es Docker swarm.

Curso de Docker,kubernetes,Openshift Introducción a docker-compose


Instalando Docker-compose:

Como vimos anteriormente, la instalación de Docker compose es bien sencilla.

sudo curl -L
[Link]
-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Luego le damos los correspondientes permisos de ejecución


sudo chmod +x /usr/local/bin/docker-compose

Y luego, vemos la versión de compose que está corriendo


docker-compose --version

Una vez que lo tenemos instalado, comenzamos

Comenzando con Docker compose:

Una vez que tenemos todo nuestro entorno correctamente configurado, lo que tenemos que
hacer es crear nuestra primer plantilla, la cual la haremos de la manera mas sencilla posible.

Vamos a verla a continuación:

version: "3"

services:
miservicio_mysql:
image: centos/mysql-57-centos7
environment:
- MYSQL_DATABASE=test01
- MYSQL_ROOT_PASSWORD=master
- MYSQL_USER=mguazzardo
- MYSQL_PASSWORD=master
expose:
- 3306
ports:
- 3306:3306

Curso de Docker,kubernetes,Openshift Introducción a docker-compose


Donde:

miservicio_mysql: será el nombre del servicio

centos/mysql-57-centos7: es la imagen a usar

MYSQL_ROOT_PASSWORD: es la variable de entorno de mysql que voy a utilizar

Expose: son los puertos a exponer

Ports: en el caso que haga un port binding, pero no se da en este caso.

Ejecutando esto:

Para poder crear este contenedor, lo que tenemos que hacer, es correr el comando Docker-
compose up -d ( el menos de es para que corra en segundo plano )

root@qqmelo1c:~# docker-compose up -d
Creating network "root_default" with the default driver
Pulling miservicio_mysql (centos/mysql-57-centos7:)...
latest: Pulling from centos/mysql-57-centos7
d8d02d457314: Pull complete
a11069b6e245: Pull complete
596303fb1aa3: Pull complete
a29499e779a7: Pull complete
17d1a52c2e00: Pull complete
ed24591227fe: Pull complete
de0ad46e3ed9: Pull complete
c62e4a984a9c: Pull complete
01d54c6bda68: Pull complete
Digest:
sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764
Status: Downloaded newer image for centos/mysql-57-centos7:latest
Creating root_miservicio_mysql_1 ... done

Nota importante:

El comando docker-compose deberá correr dentro del mismo directorio donde tenemos el
[Link]

Luego verificamos si todo lo anterior anduvo bien, con el comando docker-compose ps

root@qqmelo1c:~# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------
root_miservicio_mysql_1 container-entrypoint run-m ... Up [Link]:3306->3306/tcp

Curso de Docker,kubernetes,Openshift Introducción a docker-compose


Con esto podemos ver que se esta corriendo un servicio root_miservicio_mysql_1, que no deja
de ser un docker, que podemos consultarlo con docker inspect

Voy a pegar una parte de la salida, los últimos renglones, pero hay una en particular que me
gusta, para poder verla.

"Networks": {
"root_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"miservicio_mysql",
"56526b237b9c"
],
"NetworkID":
"a4932845572f4587c7783d0e5ca2e63a2db90edb2d2eca2a2d37e0a847dfccb6",
"EndpointID":
"7854c6005179df20157a74d0263268d321179a061eceea1e64517d7232c63b9a",
"Gateway": "[Link]",
"IPAddress": "[Link]",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:02",
"DriverOpts": null
}
}
}
}
]

Ahí vemos la ip, que es la [Link], y como ya sabemos, nos vamos a conectar con el método
del cliente mysql

root@qqmelo1c:~# mysql -u root -pmaster -h [Link]


Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

Curso de Docker,kubernetes,Openshift Introducción a docker-compose


Como podemos ver, pudimos ingresar sin problema.

Borrando el servicio.

Bueno, si ya no queremos tener mas el servicio, desde el directorio donde esta el docker-
[Link], ejecutamos lo siguiente

root@qqmelo1c:~# docker-compose down


Stopping root_miservicio_mysql_1 ... done
Removing root_miservicio_mysql_1 ... done
Removing network root_default
root@qqmelo1c:~#

Y con esto, borramos todos los servicios, tal cual cuando hacemos docker-compose ps, la salida
será

root@qqmelo1c:~# docker-compose ps
Name Command State Ports
------------------------------

Curso de Docker,kubernetes,Openshift Introducción a docker-compose

También podría gustarte