Cómo iniciar contenedores con Docker Compose
- 4977
- 1571
- Sta. Enrique Santiago
Este artículo presentará Docker Compose y mostrará cómo ponerlo a funcionar para sus necesidades. Lo instalaremos, escribiremos un archivo de composición simple y iniciaremos el contenedor.
Luego veremos cómo iniciar múltiples contenedores. Luego veremos cómo crear imágenes y últimamente cómo usar múltiples archivos de composición para iniciar contenedores en diferentes entornos, como el desarrollo y la producción, por ejemplo.
En este tutorial aprenderás:
- Cómo instalar Docker Compose
- Cómo escribir un archivo de composición simple
- Cómo ejecutar los comandos Docker-Compose para iniciar y detener contenedores
- Cómo iniciar múltiples contenedores
- Cómo construir imágenes con Docker Compose
- Cómo anular el uso de múltiples archivos de composición de Docker
Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Ubuntu 18.04 |
Software | Docker componer |
Otro | Acceso privilegiado a su sistema Linux como root o a través del sudo dominio. |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominiops - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Introducción
Hasta ahora hemos visto cómo Docker es ideal para administrar imágenes y iniciar contenedores. Pero con frecuencia las aplicaciones requieren que diferentes contenedores estén activos y se comuniquen entre sí. Conectarlos a través de la red, haciéndolos compartir volúmenes de disco, y las variables de entorno de aprobación pueden convertirse fácilmente en una secuencia de comandos que son difíciles de documentar y mantener con el tiempo. Entre Docker Compose. Comencemos a instalarlo y luego escribamos el archivo de composición.
Instalación de Docker Compose
En Ubuntu 18.04 La instalación del compositor de Docker es sencillo:
# APT Instalar Docker-Compose
Para probarlo está instalado, puede verificar su versión:
$ Docker-compose -V Docker-Compose Versión 1.17.1, construye desconocido
Las versiones de Docker Engine y Docker Compose son importantes ya que sus lanzamientos son frecuentes y las características se agregan y eliminan. La versión que se muestra arriba (1.17.1) fue lanzado en noviembre de 2017. Si necesita una versión más nueva, puede habilitar el repositorio de universo de Ubuntu y obtener un paquete más nuevo, o incluso descargar e instalar la última versión directamente desde el sitio web de Docker Compose:
# curl -l "https: // github.com/docker/compose/comunes/descargar/1.23.2/Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/docker-composa # sudo chmod +x/usr/local/bin/docker-composo
El archivo de composición de Docker
Docker Compose lee un archivo YAML, que generalmente se nombra compuesto de acopolador.YML
.
Versión: "3" Servicios: Apache: Imagen: Php: 7.3 -apache contenedor_name: puertos 'apache': - "80:80" Volúmenes: - ./www:/var/www/html
Copiar Al principio, la versión de sintaxis se informa como 3. A continuación, en la sección Servicios, solo se especifica un contenedor (Apache) y las etiquetas imagen
, contenedor_name
, puerto
, y volúmenes
se usan para describir cómo se ejecutará.
Ahora crea un directorio nombrado www
y dejar esto índice.html
Archivo en el interior.
Hola
A continuación, para probar el PHP está funcionando, simplemente suelte este archivo dentro www
.
Docker Compose Commands
El arriba
El comando se encargará de todo: descargue las imágenes de Docker Hub si aún no existen en el caché local, cree imágenes personalizadas (que no es el caso; cubriremos esa sección en la próxima) e iniciaremos los contenedores.
$ Docker -Compose Up -d
El -d
Switch instruye a Docker Compose para ejecutar contenedores en segundo plano. En caso de que se use otro nombre de archivo, en lugar de compuesto de acopolador.YML
, se puede informar con -F
.
Observe que el comando de lanzamiento es mucho más simple de lo que es estibador
correr contraparte. Tiene dos ventajas más: no cambia independientemente del contenido del archivo de composición, y si el archivo de composición especifica más de un contenedor, todos se iniciarán. Solo para comparación, el comando Docker Run sería:
$ docker run -d --name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html php: 7.3-apache
Debido a que la sintaxis del archivo de composición es YAML, la sangría es importante. Si recibe errores de sintaxis, verifique la sintaxis Yaml con un analizador en línea, como este.
Puede verificar que el contenedor se esté ejecutando.
$ Docker PS PS Comando de imagen de ID de contenedor Nombres de puertos de estado creados 3937D997E029 Php: 7.3-apache "Docker-php-entrypoi ..." Hace 8 minutos hasta 8 minutos 0.0.0.0: 80-> 80/TCP Apache
Ahora acceso http: // localhost
en tu navegador preferido y luego http: // localhost/phpinfo.php
.
Lanzamiento de múltiples contenedores
Veamos ahora un archivo de composición más complejo. Imaginemos que vamos a configurar un entorno local para desarrollar una aplicación de lámpara. Necesitamos un contenedor con Apache y PHP, otro contenedor con MySQL, y posiblemente un contenedor de PhpMyadmin para interactuar con MySQL. El compuesto de acopolador.YML
será:
Versión: "3" Servicios: Apache: Imagen: Php: 7.3 -apache Container_name: 'Apache' reiniciar: 'siempre' puertos: - "80:80" - "443: 443" Volúmenes: - ./www:/var/www/html - ./PHP/PHP.ini:/usr/local/etc/php/php.ini - ./sitios-habilitado:/etc/apache2/sites-habilitado-apache-logs:/var/log/apache2 mysql: imagen: mariadb: 10.4 Container_name: 'mySQL' reiniciar: 'siempre' volúmenes: - mysql-data:/var/lib/mysql entorno: mysql_root_password: somepassword mysql_database: db_site mysql_user: user mysql_password: contraseña phpmyadmin: image: phpmyadmin/phpmin.8 Container_name: 'PhpMyadmin' Environment: PMA_HOST: MySQL PMA_PORT: 3306 Puertos:-'8080: 80' Volúmenes: Apache-Logs: MySQL-Data:
Copiar Este archivo de composición está lanzando tres contenedores, cada uno tiene una sección en Servicios. Observe que estamos definiendo algunas variables de entorno bajo ambiente
. El reiniciar: siempre
La definición es instruir a Docker que inicie los contenedores automáticamente cuando se inicia el servicio Docker (en caso de un reinicio, por ejemplo).
El comando para iniciar los tres contenedores es el mismo que en el ejemplo simple anterior. Fácil de recordar, correcto?
$ Docker -Compose Up -d
Verifique que se creen los contenedores.
$ Docker PS Comando de imagen de ID de contenedor creado Puertos de estado Nombres F76ECE3508FE PHPMYAdmin/PhPMyAdmin: 4.8 "/correr.SH Supervisord ... "Hace 20 segundos más arriba 4 segundos 9000/TCP, 0.0.0.0: 8080-> 80/tcp phpmyadmin 69b1b5054f3d mariadb: 10.4 "Docker-EntryPoint.S ... "Hace 20 segundos hasta 6 segundos 3306/TCP MySQL 6747D7580DAC PHP: 7.3-apache "Docker-php-entrypoi ..." Hace 2 días hasta 14 segundos 0.0.0.0: 80-> 80/tcp, 0.0.0.0: 443-> 443/TCP Apache
Copiar Es interesante notar que los contenedores pueden comunicarse a través de sus nombres y acceder a los puertos del otro sin la necesidad de exponer sus puertos al anfitrión. Por ejemplo, no exponemos el puerto 3306 del servicio MySQL (como se puede ver en la salida anterior), pero PhpMyadmin puede acceder a este puerto. Para acceder a phpmyadmin, vaya a http: // localhost: 8080
e inicie sesión con el usuario y la contraseña definidos en el servicio MySQL (usuario / contraseña).
Construir imágenes con Docker Compose
Si necesita construir una imagen, en lugar de usar una existente, simplemente agregue un construir
etiqueta. En el ejemplo a continuación, le estamos diciendo a Docker componiendo que busque el directorio actual para un Dockerfile. La etiqueta de la imagen se usará para nombrar la nueva imagen.
Versión: "3" Servicios: Apache: Build: . Imagen: My-Image-Name Container_name: 'Apache' reiniciar: 'siempre' puertos:-"80:80"
Copiar Anular el uso de múltiples archivos de composición de Docker
Docker Compose facilita la personalización del lanzamiento de contenedores para diferentes entornos. Solo necesita crear los archivos de anulación llamados y iniciar los contenedores que especifican. Sobrescribirán definiciones anteriores hechas en el archivo de composición base.
Por ejemplo, creemos un archivo de anulación llamado perseguidor.YML
y defina una contraseña diferente para mysql.
Versión: "3" Servicios: MySQL: Environment: MySQL_ROOT_PASSWORD: SomePassword_other MySQL_DATABASE: DB_SITE_OTHER MYSQL_USER: user_other mysql_password: contraseña_other
Copiar Puedes usar otro host para iniciar los contenedores. Si está utilizando el mismo host, es necesario eliminar el contenedor MySQL y su volumen asociado. De lo contrario, se utilizará el contenedor existente con las credenciales antiguas.
$ Docker Stop MySQL $ Docker RM MySQL $ Docker Volumen LS $ Docker Volumen RM Directory_Mysql-Data
Y luego puede ejecutar el comando a continuación. Es importante mantener el orden de los archivos. Se pueden usar varios archivos. En nuestro ejemplo, solo el ambiente
Sección de mysql
El servicio será anulado.
$ Docker-compose -f Docker-Compose.YML -F Docker-Compose-Prod.yml up -d
Después de verificar que los contenedores se ejecutan, intente acceder a phpmyadmin utilizando las nuevas credenciales.
Conclusión
Este artículo presentó Docker Compose, una herramienta útil para orquestar el lanzamiento de múltiples contenedores en el mismo host. Hay muchas posibilidades y leer el manual de Docker Compose es muy recomendable. En los próximos artículos, vamos a explorar formas de orquestar contenedores Docker entre múltiples anfitriones.
Más en esta serie de artículos de Docker
- Una introducción práctica a los contenedores Docker
- Cómo interactuar con los contenedores Docker
- Cómo personalizar las imágenes de Docker con DockerFiles
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- Una introducción a la automatización, herramientas y técnicas de Linux
- Cómo crear una pila de lámparas basada en Docker usando Docker en ..
- Mastering Bash Script Loops
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Cosas para instalar en Ubuntu 22.04
- Cómo instalar Debian en un contenedor de Luks existente
- Cómo instalar y configurar Ghost CMS en Ubuntu
- Tutorial de depuración de GDB para principiantes