Descarga la aplicación para disfrutar aún más
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 ------------------------------
Compartir