web-dev-qa-db-fra.com

Quelle est la différence entre un fichier de pile et un fichier de composition?

J'apprends à utiliser Docker Compose pour déployer des applications dans plusieurs conteneurs, sur plusieurs hôtes. Et je suis tombé sur deux fichiers de configuration - un fichier de pile et un fichier de composition.

Dans le référence YAML du fichier de la pile de nuages , il est indiqué qu’un fichier de pile est un fichier au format YAML qui définit un ou plusieurs services, semblable à un docker-compose.yml fichier mais avec quelques extensions.

Et à partir de this post , il est indiqué que les piles sont très similaires à docker-compose sauf qu'elles définissent des services tandis que docker-compose définit des conteneurs .

Ils se ressemblent beaucoup, alors je me demande quand utiliser le fichier de pile et quand utiliser le fichier Compose?

48
dayuloli

Conceptuellement, les deux fichiers ont le même objectif: le déploiement et la configuration de vos conteneurs sur des moteurs Docker.

L'outil Docker-compos a été créé en premier lieu et a pour objectif "de définir et d'exécuter des applications Docker à conteneurs multiples" sur un moteur Docker unique. (voir aperçu de la composition du menu fixe )

Tu utilises docker-compose up pour créer/mettre à jour vos conteneurs, réseaux, volumes, etc.

Docker Stack est utilisé dans Docker Swarm (outil d'orchestration et de planification de Docker) et dispose donc de paramètres de configuration supplémentaires (répliques, déploiement, rôles) qui ne sont pas nécessaires sur un seul moteur de menu fixe.

Le fichier de pile est interprété par docker stack commande. Cette commande peut uniquement être appelée à partir d’un gestionnaire d’essaim de docker.

Vous pouvez convertir docker-compose.yml en docker-cloud.yml et vice-versa. Toutefois, comme indiqué dans votre question, vous devez faire attention aux différences. En outre, vous devez garder à l'esprit qu'il existe différentes versions pour docker-compose. Actuellement, la dernière version est la version 3. ( https://docs.docker.com/compose/compose-file/ )

Edit: Un blog intéressant, qui pourrait aider à comprendre les différences, peut être trouvé ici https://blog.nimbleci.com/2016/09/14/docker-stacks-and-why-we-need- eux /

47
Roman Mik

Remarque: La question suppose que la référence à Docker Cloud est la référence pour la compréhension de la pile. Elle est utile, mais ce n'est pas la source faisant autorité. on stack vs compos - à la place, c’est un guide spécifique au service hébergé de Docker: "Docker Cloud fournit un service de registre hébergé avec des installations de construction et de test." Pour la documentation des fichiers, voir Compose file version 3 format - bien qu’il soit nommé "Compose", il s’agit de l’endroit faisant autorité pour lequel les fonctionnalités fonctionnent à la fois avec compose et swarm/stack, et comment.

Vous pouvez spécifier un groupe de conteneurs Docker à configurer et à déployer de deux manières:

  1. Docker compose (docker-compose up)
  2. Essaim de Docker (docker swarm init; docker stack deploy --compose-file docker-stack.yml mystack)

Les deux prennent un fichier YAML écrit dans le Docker format de fichier Compose version . Cette référence est la source principale documentant à la fois la configuration docker-compose et docker swarm/stack.

Cependant, il existe des différences spécifiques entre ce que vous pouvez faire dans les deux options de fichiers yml et les conventions de dénomination spécifiques:

Les options

Les options de configuration de service disponibles sont documentées sur la page Compose file reference - généralement avec une note au bas d'une entrée d'option la décrivant comme ignorée soit par docker stack deploy ou par docker-compose up.

Par exemple, les options suivantes sont ignoré lors du déploiement d'une pile en mode swarm avec un fichier Compose (version 3):

construire, cap_add, cap_drop, cgroup_parent, conteneur_noms, depend_on, périphériques, liens_externes, liens, mode_réseau, redémarrer, security_opt, stop_signal, sysctls, tmpfs (version 3-3.5), userns_mode

... alors que certaines options sont ignorées par docker-compose, mais travaille avec docker stack deploy, tel que:

deploy, restart_policy

Lorsqu'il est exécuté à partir de la ligne de commande, docker stack deploy _ affichera des avertissements concernant les options ignorées:

Ignorer les options non prises en charge: liens

Nom du fichier

  • Pour docker-compose up _ le nom de fichier par défaut est docker-compose.yml si aucun autre nom de fichier n’est spécifié avec -f _ (voir le référence de composition ). Il est courant d'utiliser ce nom par défaut et d'exécuter la commande sans argument.

  • Pour docker stack deploy il n’existe aucun fichier par défaut dans le référence de déploiement de la pile de docker . Vous pouvez utiliser le nom de votre choix, mais voici trois conventions:

    1. utilisation docker-stack.yml, tel qu'utilisé dans le Docker officiel pour débutants Ch.3: Déploiement d'une application sur un essaim .
    2. utilisation docker-cloud.yml, tel qu'utilisé dans le référence YML de la pile Docker Cloud pour le service Docker Cloud.
    3. utilisation docker-compose.yml - l'ancien nom par défaut du format de fichier Compose.
4
JeremyDouglass