web-dev-qa-db-fra.com

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

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

196
Hafiz

La docker cli est utilisée lors de la gestion de conteneurs individuels sur un moteur de menu fixe. C'est la ligne de commande du client pour accéder à l'api du démon docker.

Le docker-compose cli peut être utilisé pour gérer une application multi-conteneur. Il déplace également de nombreuses options que vous saisiriez sur le fichier docker runcli dans le fichier docker-compose.yml pour une réutilisation plus facile. Il fonctionne comme un "script" frontal au-dessus de la même API de dockeur que celle utilisée par docker, de sorte que vous puissiez faire tout ce que docker-compose fait avec les commandes docker 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. En commençant par version 3 format yml et docker 1.13, vous pouvez utiliser yml avec docker-compose et définir une pile en mode swarm de docker. Pour ce faire, vous devez utiliser docker stack deploy -c docker-compose.yml $stack_name au lieu de docker-compose up, puis gérer la pile avec les commandes docker au lieu de docker-compose. Le mappage est un un pour un entre les deux utilisations:

  • Compose Project -> Swarm Stack: groupe de services ayant un but spécifique
  • Compose Service -> Swarm Service: une image et sa configuration, éventuellement agrandie.
  • Compose Container -> Swarm Task: un seul conteneur dans un service

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

236
BMitch

docker gère les conteneurs individuels

docker-compose gère plusieurs applications de conteneur

L'utilisation de docker-compose nécessite 3 étapes:

  1. Définir l'environnement de l'application avec un Dockerfile
  2. Définissez les services de l'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 exemple de [docker-compose.yml tiré de docker docs :

_services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
_
53
JSON C11