tag run remove hub example container docker docker-compose docker-swarm docker-swarm-mode

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:

  1. Docker compone ( docker-compose up )
  2. 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 es docker-compose.yml si no se especifica un nombre de archivo alternativo con -f (consulte la referencia docker-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:

    1. use docker-stack.yml , como se usa en el Docker oficial para principiantes Cap.3: implementación de una aplicación en un enjambre .
    2. utilice docker-cloud.yml , tal como se utiliza en la referencia Docker Cloud Stack YML para el servicio Docker Cloud.
    3. use docker-compose.yml - el nombre predeterminado anterior para el formato de archivo Compose.

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"