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

237

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

Hafiz
la source

Réponses:

270

Le dockercli est utilisé lors de la gestion de conteneurs individuels sur un moteur docker. Il s'agit de la ligne de commande client pour accéder à l'API du démon Docker.

Le docker-composecli peut être utilisé pour gérer une application multi-conteneurs. Il déplace également de nombreuses options que vous saisiriez sur le docker runcli dans le docker-compose.ymlfichier pour une réutilisation plus facile. Il fonctionne comme un "script" frontal au-dessus de la même API docker utilisée par docker, vous pouvez donc tout faire docker-composeavec des dockercommandes et beaucoup de scripts shell. Voir cette documentation sur docker-compose pour plus de détails.


Mise à jour pour le mode Swarm

Depuis que cette réponse a été publiée, docker a ajouté une deuxième utilisation des fichiers docker-compose.yml. À partir du format yml de la version 3 et de docker 1.13, vous pouvez utiliser le yml avec docker-compose et également pour définir une pile en mode swarm de docker. Pour faire ce dernier, vous devez utiliser docker stack deploy -c docker-compose.yml $stack_nameau lieu de docker-compose uppuis gérer la pile avec des dockercommandes au lieu de docker-composecommandes. Le mappage est un pour un entre les deux utilisations:

  • Projet Compose -> Swarm Stack: un groupe de services dans un but précis
  • Compose Service -> Swarm Service: une image et sa configuration, éventuellement agrandies.
  • Composer un conteneur -> Tâche Swarm: un seul conteneur dans un service

Pour plus de détails sur le mode Swarm, consultez la documentation du mode Swarm de Docker .

BMitch
la source
76

docker gère des conteneurs simples

docker-compose gère plusieurs applications de conteneurs

L'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 uppour démarrer et exécuter l'application

docker-compose up

Voici un exemple de docker-compose.yml tiré des documents de docker :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
JSON C11
la source
3
Par souci de clarté, la ligne build: .dans la websection pointe vers l'emplacement du Dockerfile créé à l'étape 1.
AndrewGentry