Logo Studenta

18 1 docker-compose

¡Estudia con miles de materiales!

Vista previa del material en texto

Curso de Docker,kubernetes,Openshift Introducción a docker-compose 
 
 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 
https://github.com/docker/compose/releases/download/1.21.2/docker
-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 
docker-compose.yml 
 
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 0.0.0.0: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": "172.18.0.1", 
 "IPAddress": "172.18.0.2", 
 "IPPrefixLen": 16, 
 "IPv6Gateway": "", 
 "GlobalIPv6Address": "", 
 "GlobalIPv6PrefixLen": 0, 
 "MacAddress": "02:42:ac:12:00:02", 
 "DriverOpts": null 
 } 
 } 
 } 
 } 
] 
 
Ahí vemos la ip, que es la 172.18.0.2, y como ya sabemos, nos vamos a conectar con el método 
del cliente mysql 
 
root@qqmelo1c:~# mysql -u root -pmaster -h 172.18.0.2 
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-
compose.yml, 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 
------------------------------

Continuar navegando

Contenido elegido para ti

210 pag.
Kali Linux - David Santo Orcero

SIN SIGLA

User badge image

Michele Huaman Meza

332 pag.
0179-el-lenguaje-de-programacion-rust

SIN SIGLA

User badge image

matiasrivero1561232

35 pag.
CURSO LINUX PARA PRINCIPIANTES

SIN SIGLA

User badge image

Stiven Fajardo

22 pag.
17 pag.