Este es un texto traducido automáticamente que puede contener errores!
Con Compose describes la configuración deseada en un archivo y dejas que Docker cree los contenedores. Aquí empiezas con un servidor web Nginx a partir de una imagen terminada. Después puedes agregar un servicio e investigar lo que se crea automáticamente.
Antes de comenzar: El motor de Docker (Docker Engine) y Compose desde Docker Level 1 deben funcionar. Ejecuta docker compose version en la máquina virtual de Linux. No necesitas una aplicación Flask, un Dockerfile ni una cuenta de GitHub. El glosario de YAML ofrece soporte para sangrados y listas; puedes leerlo sin haber creado un flujo de trabajo en GitHub.
Primero realiza la “Tarea 1” y comprueba la respuesta del sitio web. La actualización es una referencia para trabajos posteriores. La “Tarea 2” te permite probar varios servicios en el mismo proyecto.
¿Qué es Docker Compose?
Con Docker Compose describes uno o más servicios en un archivo. En este ejercicio, cada servicio ejecuta un contenedor. Aquí se utiliza docker-compose.yml.
compose.yaml y docker-compose.yml son nombres compatibles con Compose. Usa uno de ellos en la carpeta del proyecto y ejecuta los comandos desde esa carpeta. Aquí se utiliza docker-compose.yml.
services:
web:
image: nginx:latest
ports:
- "127.0.0.1:8083:80"
Un comando configura todo:
docker compose up -d
# Starter tjenestene i bakgrunnen.
# Inicia los servicios en segundo plano.
El archivo Compose puede usarse en otro servidor, pero también debe transferir los datos necesarios y los archivos locales, así como configurar las contraseñas, la red y otras configuraciones. Las etiquetas como latest pueden apuntar a una imagen nueva más adelante. Si las compilaciones deben ser idénticas, también debe fijar qué imagen se utiliza.
¿Por qué es esto automatización?
Piensa en la diferencia:
| Configuración manual | Con Docker Compose |
|---|---|
| Instala Nginx manualmente | image: nginx:latest |
| Configura los puertos | ports: "80:80" |
| Instala Grafana manualmente | image: grafana/grafana:latest |
| Documenta todos los pasos | Describe el ajuste deseado en el archivo Compose |
| Repite todo en el siguiente servidor | docker compose up -d |
El archivo Compose forma parte de la documentación técnica y describe la configuración deseada. Verifica el estado real con docker compose ps y los registros (logs). Las justificaciones, los resultados de las pruebas y las rutinas de copia de seguridad deben documentarse adicionalmente.
Leejemplopequeño
services agrupa los servicios. web es el nombre que le damos al servidor web. image selecciona una imagen lista para usar, mientras que ports conecta el puerto 8083 en la dirección de retorno del equipo virtual con el puerto 80 dentro del contenedor. Por lo tanto, pruebas desde el propio equipo virtual. La compilación a partir del código fuente se aborda en [[Nivel 2 de Docker - Dockerfile y Compose|Nivel 2 de Docker]].
Comandos útiles de Docker
| Comando | Qué hace |
|---|---|
docker compose up -d | Inicia todos los servicios en segundo plano |
docker compose down | Detiene y elimina los contenedores y redes del proyecto |
docker compose logs -f | Sigue los registros en tiempo real |
docker compose pull | Obtiene las imágenes a las que apuntan las etiquetas del proyecto |
docker compose restart | Reinicia los contenedores del proyecto sin cambiar la imagen |
docker ps | Muestra los contenedores en ejecución |
Cuando el servicio necesita almacenamiento
[[Containerbruk Level 2 - Bevar data utanfor containeren|Conservar datos fuera del contenedor]] explica los montajes de directorios (bind mounts) y los volúmenes con nombre. El ejercicio de Nginx a continuación no requiere ninguna base de datos ni conexión de almacenamiento. Utilice la compatibilidad con almacenamiento antes de ampliar el proyecto con un servicio que deba conservar datos.
Actualización de servicios
Actualizar un servicio de Docker es sencillo:
# Obtener la última versión
docker compose pull
# Reiniciar con la nueva versión
docker compose up -d
up -d utiliza la nueva imagen al recrear el contenedor. Verifique que el servicio funcione después de la actualización; una nueva versión de imagen puede requerir cambios en las configuraciones o los datos.
Tarea 1 - Configurar Nginx con Docker Compose
Trabaje en la consola de la máquina virtual. Cree una nueva carpeta para que este ejercicio no modifique otro proyecto de Compose:
mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml
Si la carpeta ya existe, ábrela y verifica el contenido antes de continuar. Escribe el ejemplo de Nginx de “¿Qué es Docker Compose?” en el archivo. Guarda con Ctrl+O, confirma con Enter y cierra con Ctrl+X. Verifica e inicia:
docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083
config --quiet debe finalizar sin error. Si corrige un error en el archivo, ejecute la comprobación nuevamente antes de iniciar. ps debe mostrar web como activo y curl debe mostrar contenido de Nginx con Welcome to nginx!.
Si el puerto está ocupado, seleccione otro puerto disponible del host en el archivo y use el mismo puerto en curl. Si el contenedor se detiene, lea docker compose logs web. No inicie un nuevo proyecto en una carpeta al azar para volver a intentarlo.
Explique antes de continuar: ¿Qué archivo describe el servicio y qué creó docker compose up -d? Detenga el proyecto con docker compose stop, inícielo nuevamente con docker compose up -d y repita la prueba de curl. Si usa esta página como apoyo de Compose para otra tarea, puede regresar allí ahora.
Tarea 2 - Agregar un servicio
Amplía el archivo docker-compose.yml de la tarea 1 con un servicio adicional. Por ejemplo:
- Uptime Kuma en el puerto 3001
- Grafana en el puerto 3000
Usa un nombre de servicio propio bajo services, al mismo nivel de sangrado que web. Lee el ejemplo oficial de Docker del servicio para obtener la imagen necesaria, el puerto y el almacenamiento. Usa un puerto de host disponible y limita el acceso al entorno de práctica. Una etiqueta latest no es una versión fija.
Ejecuta primero docker compose config --quiet. Luego inicia con docker compose up -d y verifica que ambos servicios se ejecuten simultáneamente. Si usas enlace de retroalimentación como con Nginx, prueba el puerto desde la máquina virtual; el acceso desde otra máquina requiere aclarar por separado la dirección, el puerto y la red.
Muestra docker compose ps y una respuesta esperada de cada servicio en la dirección y el puerto que hayas configurado realmente. Explica oralmente o por escrito qué crea Compose automáticamente y lo que aún debes configurar tú mismo, por ejemplo datos, ajustes y copias de seguridad. Si un servicio se detiene, lee docker compose logs antes de cambiar la configuración. Finaliza cualquier seguimiento de registros con Ctrl+C.
Resumen
- Docker Compose te permite definir varios servicios en un solo archivo
- El archivo de Compose es a la vez configuración y documentación
- La actualización se realiza con
docker compose pull+docker compose up -d - Docker facilita el traslado de servicios entre servidores
Fuentes: Docker Compose: primer proyecto y Servicios de Compose.