Docker Compose es una herramienta inmensamente popular para trabajar con contenedores. Mientras que el docker
ordinario CLI interactúa con un contenedor a la vez, docker-compose
le permite controlar múltiples contenedores en conjunto.
Compose existe actualmente como un proyecto independiente que se distribuye independientemente de Docker. Si desea utilizar Compose, deberá descargarlo por separado. Muchos usuarios terminan agarrando el binario directamente, ya que los administradores de paquetes del sistema operativo a menudo se quedan atrás, incluso si ofrecen la última versión de Docker.
Docker Compose v2 se anunció en DockerCon 2021. Promete grandes cambios en la experiencia de Compose al integrarlo en docker
CLI. v2 también viene con nuevas características de conveniencia para ayudarlo a administrar sus pilas de contenedores.
El nuevo comando “docker compose”
Docker Compose v2 trae la funcionalidad de Compose a Docker mismo. Podrá usar Compose dondequiera que esté instalada la CLI de Docker más reciente, sin necesidad de pasos adicionales. Debajo, Docker sigue usando las funciones proporcionadas por el proyecto Compose.
docker-compose
existente los comandos deben asignarse directamente a su nuevo docker compose
contrapartes En la mayoría de los casos, puede soltar el guión sin necesidad de realizar más cambios. docker compose
admite casi todos los subcomandos e indicadores de Compose v1, aunque una minoría no se implementará.
Compose v2 aún admitirá la invocación a través de docker-compose
binario. Los scripts de flujo de trabajo existentes deberían seguir funcionando, incluso si no los actualiza inmediatamente para usar docker compose
. A largo plazo, es probable que la mayoría de los autores cambien al nuevo formulario.
Experimentando con Docker Compose v2
Compose v2 se encuentra actualmente en versión beta. Aunque sigue en desarrollo, el nuevo binario ya se envía con Docker Desktop para Windows y Mac. Desktop v3.4 agregó soporte para docker compose
comandos, por lo que es probable que ya pueda usarlo hoy. Los paquetes de Linux se actualizarán más adelante en el año; un script de instalación manual está disponible mientras tanto.
docker-compose
El comando puede invocar actualmente v1 o v2, por defecto a v1. La opción se activa automáticamente para un subconjunto de usuarios; eventualmente lanzará v2 para todos.
Puede cambiar manualmente docker-compose
entre v1 y v2 ejecutando docker-compose disable-v2
o docker-compose enable-v2
. Esto le permite mantener la compatibilidad con cualquier archivo Compose existente que no funcione con v2. docker compose
los comandos siempre usarán v2.
Cambios de especificación
Llevar la funcionalidad de Compose a la CLI de Docker ha requerido cambios en la especificación de Compose. Esto ahora distingue entre implementaciones de comandos y docker-compose.yml
formato YAML.
El enfoque revisado brinda nuevas oportunidades para integrar funciones adicionales. Las implementaciones experimentales se pueden proporcionar más rápidamente y el equipo de Compose está mejor equipado para agregar propuestas de la comunidad. La CLI está más desvinculada del formato de archivo YAML, por lo que implementaciones alternativas (como docker compose
) son una posibilidad.
Más allá de la CLI, la existencia de la especificación de Composer permite a los proveedores de la nube implementar también la funcionalidad de Compose. Ahora puede ejecutar docker compose up
contra un contexto de Docker basado en la nube para lanzar su aplicación en producción. Docker viene con soporte integrado para entornos Amazon ECS y Microsoft ACI.
Internamente, Compose v2 usa Buildkit de forma predeterminada para compilaciones más rápidas. El rendimiento general debería ser más rápido a medida que se ejecutan más tareas en paralelo, lo que reduce los tiempos de procesamiento.
Nuevas funciones en v2
El cambio de docker-compose
a docker compose
no es el único cambio en v2. También hay nuevas características que afectan la forma en que interactúa con sus pilas de contenedores.
Una limitación de Compose v1 es su enfoque de los nombres de proyectos. Cuando ejecuta docker-compose up -d
, Compose antepone el nombre del proyecto al nombre del servicio de cada contenedor. Esto asegura que todos los contenedores estén agrupados.
v1 infiere el nombre del proyecto del nombre de su directorio de trabajo. Puede elegir manualmente un nombre diferente configurando el COMPOSE_PROJECT_NAME
variable de entorno.
v2 simplifica esto al agregar un indicador CLI para establecer el nombre del proyecto. Agregar --project-name
o -p
para ignorar el nombre del directorio de trabajo, sin alterar el entorno. Establecer manualmente el nombre del proyecto le permite combinar contenedores de varios directorios de trabajo en una pila, o iniciar varias instancias de una pila de contenedores.
Otra característica nueva v2 le permite enumerar todas las pilas de Compose en su sistema. El docker compose ls
El comando proporciona una tabla de nombres de proyectos y su estado (en ejecución o detenido). Esto complementa el docker compose ps
comando que da los estados de los contenedores en una pila.
Compose v2 también agrega soporte para docker compose cp
. Este comando funciona de manera similar a docker cp
y le permite copiar archivos dentro y fuera de sus contenedores:
docker cp my-container local-file.txt /path/to/container/file.txt
Resumen
Docker Compose v2 es una actualización sustancial que brinda mayor comodidad a la herramienta de administración de contenedores. La integración de Compose en la CLI principal de Docker significa que está disponible donde sea que se encuentre Docker. Esto lo hace más accesible y fácil de usar.
Compose v2 también trae algunos comandos de utilidad adicionales para facilitar el trabajo con diferentes pilas y contenedores. Obtiene una mejor visibilidad de lo que se está ejecutando en su sistema. Si bien todavía está en versión beta al momento de escribir este artículo, los usuarios de Windows y Mac pueden usar v2 hoy, mientras que los usuarios de Linux pueden descargar la última versión de GitHub.