run - docker tag example
¿Cuál es la diferencia entre un archivo de pila y un archivo de composición? (2)
Conceptualmente, ambos archivos cumplen la misma función: implementación y configuración de sus contenedores en los motores acoplables.
La herramienta Docker-compose se creó primero y su propósito es "definir y ejecutar aplicaciones Docker de contenedores múltiples" en un solo motor acoplador. (ver descripción general de docker )
Tu usas
docker-compose up
para crear / actualizar sus contenedores, redes, volúmenes, etc.
Donde Docker Stack se utiliza en Docker Swarm (herramienta de programación y orquestación de Docker) y, por lo tanto, tiene parámetros de configuración adicionales (es decir, réplicas, implementación, roles) que no son necesarios en un solo motor de docker.
El archivo de pila es interpretado por
docker stack
mando. Este comando solo puede invocarse desde un administrador de enjambre de acoplador.
Puede convertir docker-compose.yml a docker-cloud.yml y viceversa. Sin embargo, como se indicó en su pregunta, debe prestar atención a las diferencias. Además, debe tener en cuenta que existen diferentes versiones para Docker-Componer. Actualmente, la última versión es la versión 3. ( https://docs.docker.com/compose/compose-file/ )
Editar: Un blog interesante, que podría ayudar a entender las diferencias, se puede encontrar aquí https://blog.nimbleci.com/2016/09/14/docker-stacks-and-why-we-need-them/
Estoy aprendiendo sobre el uso de Docker Compose para implementar aplicaciones en múltiples contenedores, en múltiples hosts. Y he encontrado dos archivos de configuración: archivo de pila y archivo de composición.
A partir de la referencia YAML del archivo de la pila de la nube , indica que un archivo de la pila es un archivo en formato YAML que define uno o más servicios, similar a un archivo docker-compose.yml
pero con algunas extensiones.
Y a partir de esta publicación , establece que las pilas son muy similares a Docker-Comose, excepto que definen servicios mientras docker-compose define contenedores .
Se ven muy similares, entonces me pregunto cuándo usaría el archivo de pila, y cuándo usar el archivo de composición.
Puede especificar un grupo de contenedores Docker para configurar e implementar de dos maneras:
- Docker compone (
docker-compose up
) - Enjambre de Docker (
docker swarm init; docker stack deploy --compose-file docker-stack.yml mystack
)
Ambos toman un archivo YAML escrito en el https://docs.docker.com/compose/compose-file/ Docker https://docs.docker.com/compose/compose-file/ .
Sin embargo, existen diferencias específicas: opciones específicas y convenciones de nomenclatura específicas:
Opciones
Las opciones de configuración del servicio disponibles están documentadas en la página de https://docs.docker.com/compose/compose-file/ , generalmente con una nota en la parte inferior de una entrada de opción describiéndola como ignorada por docker stack deploy
o por docker-compose up
.
Por ejemplo, las siguientes opciones se ignoran al implementar una pila en modo enjambre con un archivo Compose (versión 3):
- construir
- cap_add
- cap_drop
- cgroup_parent
- container_name
- depende de
- dispositivos
- enlaces externos
- campo de golf
- Modo de red
- reiniciar
- security_opt
- stop_signal
- sysctls
- tmpfs (versión 3-3.5)
- userns_mode
... mientras que docker-compose
ignora algunas opciones, pero funciona con la docker stack deploy
, como por ejemplo:
- desplegar
- restart_policy
Cuando se ejecuta desde la línea de comandos, docker stack deploy
imprime advertencias sobre las opciones que ignora:
Ignorando las opciones no compatibles: enlaces
Nombramiento de archivos
Para
docker-compose up
el nombre de archivo predeterminado esdocker-compose.yml
si no se especifica un nombre de archivo alternativo con-f
(consulte la referenciadocker-compose.yml
). Es común usar este nombre predeterminado y ejecutar el comando sin un argumento.Para la
docker stack deploy
no se proporciona un archivo predeterminado en la referencia de despliegue de la pila acoplable . Puede usar el nombre que desee, sin embargo, aquí hay tres convenciones:- use
docker-stack.yml
, como se usa en el Docker oficial para principiantes Cap.3: implementación de una aplicación en un enjambre . - utilice
docker-cloud.yml
, tal como se utiliza en la referencia Docker Cloud Stack YML para el servicio Docker Cloud. - use
docker-compose.yml
- el nombre predeterminado anterior para el formato de archivo Compose.
- use
Nota : la pregunta comienza adivinando que la referencia de Docker Cloud es la herramienta clave para entender la pila, y que es útil, pero que no es la fuente autorizada en stack versus compose, sino que es una guía específica de Docker. servicio alojado: "Docker Cloud proporciona un servicio de registro alojado con instalaciones de compilación y prueba"