web-dev-qa-db-fra.com

Quels sont les avantages de Docker Compose sur Docker Swarm et Docker Stack?

D'après ce que j'ai lu, il semble que Docker-Compose soit un outil permettant de créer plusieurs conteneurs sur un seul hôte, tandis que Docker Swarm est un outil qui peut faire exactement la même chose mais avec plus de contrôle et sur plusieurs hôtes avec l'aide de Docker Stack. J'ai parcouru le didacticiel et suis tombé sur ce fil de discussion:

docker-compose.yml vs docker-stack.yml quelle différence?

Et j'arrive à la conclusion qu'il n'y a aucune raison d'utiliser jamais Docker-Compose lorsque vous pouvez utiliser Docker Swarm avec Docker Stack. Ils peuvent même utiliser le même fichier docker-compose.yml.

Il semble que Docker-compose soit arrivé avant l'essaim et la pile et peut-être que la nouvelle solution swarm + stack rend la composition obsolète, mais cela reste pour des raisons héritées. Cette pensée est-elle correcte? Sinon, quels sont les avantages de Docker-Compose par rapport à Docker Swarm et Docker Stack pour la création d'un environnement de développement ou de production?

9
Kyle Truong

Il semble que Docker-compose soit arrivé avant l'essaim et la pile et peut-être que la nouvelle solution swarm + stack rend la composition obsolète, mais cela reste pour des raisons héritées. Cette pensée est-elle correcte?

En bref, oui. Compose est venu avant tout le matériel Swarm (il s’agissait d’un utilitaire tiers appelé fig). Pour aggraver les choses, il existe même deux essaims différents, le vieil Swarm (celui qui était un outil séparé) et le mode Swarm (intégré au binaire docker de nos jours).

Il semble évoluer vers des concepts de services et de déploiement intégrés à Docker. Mais je suppose que Docker Compose et le déploiement du mode Swarm vivront côte à côte pendant un certain temps.

Il est également intéressant de savoir que les bases de Docker Compose se présentent sous la forme d'une bibliothèque appelée libcompose ( https://github.com/docker/libcompose ) utilisée par d'autres utilitaires tiers pour prendre en charge le format de fichier docker-compose.yml pour le déploiement ( voir Rancher et rancher-compose à titre d'exemple). J'imagine qu'ils feraient un effort pour continuer à soutenir libcompose.

Je ne sais pas si le matériel de déploiement de Docker Swarm utilise réellement libcompose. Lors de mes recherches superficielles, il semblerait que le mode Swarm utilise not implémente libcompose et effectue ses propres opérations. Je ne sais pas comment cela se rapporte à l'avenir de Docker Compose et libcompose. Interprétez comme bon vous semble ...

8
Andy Shinn

D'après ce que j'ai trouvé: Quelle est la différence entre Docker Swarm, Docker Compose et Docker Networks?

Docker Compose est un outil côté client qui vous permet d'exécuter une pile d'applications avec plusieurs composants.

Donc, dans notre scénario, vous utiliseriez Docker Compose pour atteindre - # 2 * ¹. Vous allez définir un fichier de spécification dans lequel vous définirez comment un conteneur doit être construit pour chacun de vos composants - base de données, application et niveau Web. Vous pouvez également spécifier comment ces contacts vont interagir les uns avec les autres. Combien d'instance de chacun et beaucoup d'autres choses.

* ¹ Vous devez maintenant démarrer une pile d'applications comportant un niveau Web, un niveau d'application et un niveau de base de données.


Compose est un outil permettant de définir et d’exécuter des applications Docker contenant plusieurs conteneurs.

Docker Swarm est une fonctionnalité côté serveur qui vous permet de:

  • Un essaim est un groupe de nœuds dockers (machines) qui agissent en tant que ressources sous-jacentes pour démarrer plusieurs conteneurs. On peut orchestrer et déployer des services sur l’essaim.

    Vous pouvez combiner plusieurs nœuds en un cluster, puis envoyer la commande «docker run» à ce cluster (en fait au nœud du gestionnaire Swarm). Swarm gérera la planification (à partir) de ce conteneur sur l'un des nœuds.

  • Autoriser les conteneurs de tous les nœuds à communiquer entre eux

Consultez la documentation officielle à l'adresse: Aperçu du mode Swarm & Docker Compose

3
ob1