docker
et docker-compose
semblent interagir avec le même dockerFile, quelle est la différence entre les deux outils?
la source
docker
et docker-compose
semblent interagir avec le même dockerFile, quelle est la différence entre les deux outils?
Le docker
cli 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-compose
cli peut être utilisé pour gérer une application multi-conteneurs. Il déplace également de nombreuses options que vous saisiriez sur le docker run
cli dans le docker-compose.yml
fichier 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-compose
avec des docker
commandes 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_name
au lieu de docker-compose up
puis gérer la pile avec des docker
commandes au lieu de docker-compose
commandes. Le mappage est un pour un entre les deux utilisations:
Pour plus de détails sur le mode Swarm, consultez la documentation du mode Swarm de Docker .
docker
gère des conteneurs simples
docker-compose
gère plusieurs applications de conteneurs
L'utilisation de docker-compose nécessite 3 étapes:
docker-compose up
pour démarrer et exécuter l'applicationVoici 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: {}
build: .
dans laweb
section pointe vers l'emplacement du Dockerfile créé à l'étape 1.