360 votes

Quelle est la différence entre docker et docker-compose ?

docker y docker-compose semblent interagir avec le même dockerFile, quelle est la différence entre les deux outils ?

361voto

BMitch Points 3744

En docker cli est utilisé pour gérer des conteneurs individuels sur un moteur Docker. Il s'agit de la ligne de commande du client pour accéder à l'api du démon Docker.

En docker-compose cli peut être utilisé pour gérer une application à plusieurs conteneurs. Il déplace également un grand nombre d'options que vous saisissez dans le champ docker run cli dans le docker-compose.yml pour une réutilisation plus facile. Il fonctionne comme un front-end "script" au-dessus de la même api docker utilisée par docker pour que vous puissiez tout faire docker-compose fait avec docker et beaucoup de scripts shell. Voir cette documentation sur docker-compose pour plus de détails.


Mise à jour pour le mode essaim

Depuis que cette réponse a été postée, docker a ajouté une deuxième utilisation des fichiers docker-compose.yml. En commençant par le format yml version 3 et docker 1.13, vous pouvez utiliser le yml avec docker-compose et aussi pour définir une pile en mode essaim de docker. Pour ce dernier point, vous devez utiliser docker stack deploy -c docker-compose.yml $stack_name au lieu de docker-compose up et ensuite gérer la pile avec docker à la place des commandes docker-compose des commandes. La correspondance est un pour un entre les deux utilisations :

  • Compose Project -> Swarm Stack : Un groupe de services dans un but précis
  • Service Compose -> Service Swarm : Une image et sa configuration, éventuellement mise à l'échelle.
  • Compose Container -> Swarm Task : Un seul conteneur dans un service

Pour plus de détails sur le mode essaim, voir Documentation sur le mode essaim de docker .

123voto

JSON C11 Points 3146

docker gère les conteneurs uniques

docker-compose gère plusieurs applications en conteneur

Utilisation de docker-compose nécessite 3 étapes :

  1. Définissez l'environnement de l'application avec un Dockerfile
  2. Définissez les services d'application dans docker-compose.yml
  3. Exécuter docker-compose up pour démarrer et exécuter l'application

docker-compose up

Vous trouverez ci-dessous un docker-compose.yml exemple tiré du documentation sur les dockers :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

10 votes

Pour des raisons de clarté, la ligne build: . dans le web pointe vers l'emplacement du fichier Dockerfile créé à l'étape 1.

2 votes

Alors, combien de conteneurs seront créés avec le yml ci-dessus ? Est-ce qu'ils partagent quelque chose, comme FS ?

5voto

Ganapriya S Points 1

Un Dockerfile est un document texte qui contient toutes les commandes/instructions qu'un utilisateur pourrait appeler sur la ligne de commande pour assembler une image.

Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration. Par défaut, docker-compose attend le nom du fichier Compose comme suit docker-compose.yml ou docker-compose.yaml . Si le fichier de composition a un nom différent, nous pouvons le spécifier avec l'option -f.

Cliquez ici pour plus de détails

4voto

Dev Points 1

Docker ou plus précisément docker engine est utilisé lorsque nous voulons gérer un seul conteneur alors que le docker-compose est utilisé lorsque nous avons plusieurs conteneurs à gérer. Nous aurions besoin de plusieurs conteneurs lorsque nous avons plus d'un service à prendre en charge, comme nous avons une application qui a un modèle client-serveur. Nous avons besoin d'un conteneur pour le modèle serveur et d'un autre conteneur pour le modèle client. Docker compose exige généralement que chaque conteneur ait son propre dockerfile et ensuite un fichier yml qui incorpore tous les conteneurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X