Crea tu infraestructura de contenedores con Docker Compose
2023-2-1 16:0:18 Author: thehackerway.com(查看原文) 阅读量:15 收藏

Demostración en vídeo de éste post:

Docker es una tecnología robusta y potente, te permite crear espacios virtuales conocidos como «contenedores», los cuales se basan en una imagen que tiene todo preparado para que simplemente funcionen. Si bien es una tecnología que inicialmente tiene una pequeña curva de aprendizaje, por si sola no es escalable. Esto significa que solamente utilizando Docker es un tanto complicado gestionar una infraestructura completa en la que tengas que trabajar con múltiples contenedores y precisamente por este motivo existen soluciones como Kubernetes o Docker Swarm. No obstante existe otra alternativa en el caso de que no quieras trabajar con todas las prestaciones (y lidiar con las complejidades) que vienen implícitas de un «enjambre» de contenedores distribuidos en múltiples máquinas, esta alternativa es Docker Compose o simplemente Compose.

Esta herramienta se encuentra integrada en las últimas versiones de Docker y permite levantar múltiples contenedores al mismo tiempo, que compartan volúmenes y redes e incluso que se conecten entre ellos, lo único que hace falta es definir dichas condiciones en un fichero en formato YAML que siga la sintaxis de Compose. Representa un modelo sencillo para trabajar y especialmente útil cuando quieres ejecutar aplicaciones y herramientas que usan múltiples contenedores y no quieres levantarlos uno a uno, ni tampoco instalar un orquestador como K8S que lo haga por ti.

Hay que tener en cuenta, eso sí, que la estructura del fichero YAML es estricta, tienes que respetar la indentación y conocer las palabras reservadas, de lo contrario tu infraestructura con Compose no va a funcionar. Por otro lado, si bien es habitual utilizar un único fichero YAML, es posible crear varios e importarlos o en uno principal, de tal manera que puedes controlar mejor tu infraestructura y definir ficheros que están pensados para un entorno de desarrollo, staging, pruebas, pre-producción, producción, etc.

Lo mejor de Compose es que tiene un conjunto de comandos reducido y es muy fácil de ejecutar, tal como indicaba anteriormente, su complejidad se encuentra en los ficheros YAML, pero incluso éstos son fáciles de manejar cuando aprendes la sintaxis y las instrucciones mínimas. A continuación, verás algunos comandos disponibles en Compose.

docker-compose build

Permite construir las imágenes definidas en el fichero docker-compose.yml

docker-compose images

Permite consultar las imágenes que se han construido previamente en el fichero “compose” actual.

docker-compose stop

Detiene los contenedores de los servicios especificados, sin destruirlos.

docker-compose run

Equivalente de «docker run» permite ejecutar un comando sobre uno o varios de los servicios definidos en el fichero compose.

docker-compose up

Ejecuta los comandos «build» y «run» de docker-compose.

docker-compose ps

Listado de los contenedores en ejecución para el fichero compose actual.

docker-compose down

Detiene todos los servicios para el fichero compose actual y limpia todos los recursos
(contenedores, redes, volúmenes, imágenes).

El corazón de ésta tecnología se encuentra en el fichero YAML que lee el comando «docker compose» o «docker-compose», el cual normalmente declara las siguientes secciones:

version: Permite definir la versión con la que trabajará Docker-compose. Dependiendo del número de versión definido en esta sección, tendrás más o menos instrucciones que puedes aplicar en tu fichero YAML.

services: Se refiere a cada uno de los servicios que se pueden definir en Compose y a efectos prácticos, son los contenedores que Docker-Compose va a levantar por ti. Esta es probablemente la sección más completa, ya que aquí es posible indicar cuántos contenedores se deben levantar para la imagen especificada, si tiene relaciones con otros servicios (contenedores), si utiliza algún volumen o si se debe conectar a un red Docker concreta, etc.

volumes: Aquí se pueden declarar los volúmenes que se utilizarán por parte de los servicios.

networks: Aquí se pueden declarar las redes a las que se van a conectar los servicios definidos en el compose.

Un ejemplo que describe fácil y rápidamente el uso de Docker-Compose sería levantar un WordPress. Este tipo de aplicación requiere un servidor web con soporte a PHP y una base de datos (típicamente MySQL) para poder funcionar. Un YAML como el siguiente permitirá tener una instalación de WordPress perfectamente funcional y lo mejor de todo, con persistencia gracias al uso de volúmenes.

Normalmente, para montar esto tendrías que crear los volúmenes y las redes por separado, luego crear los contenedores y conectarlos a la red creada anteriormente, es decir, mucho trabajo. Con Compose lo haces todo con un comando y la herramienta lo hace todo por ti.


Una maravilla.

En este post se ha hecho una introducción rápida a Docker-Compose, pero hay muchas más opciones disponibles que merece la pena conocer. Te invito a que leas la documentación oficial y te fijes en los ejemplos que aportan, la verdad es que es un proyecto que merece la pena dedicarle tiempo para aprenderlo en detalle.

Un saludo y Happy Hack!
Adastra.


文章来源: https://thehackerway.com/2023/02/01/crea-tu-infraestructura-de-contenedores-con-docker-compose/
如有侵权请联系:admin#unsafe.sh