docker
y docker-compose
semblent interagir avec le même dockerFile, quelle est la différence entre les deux outils ?
Pour des raisons de clarté, la ligne build: .
dans le web
pointe vers l'emplacement du fichier Dockerfile créé à l'étape 1.
docker
y docker-compose
semblent interagir avec le même dockerFile, quelle est la différence entre les deux outils ?
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 :
Pour plus de détails sur le mode essaim, voir Documentation sur le mode essaim de docker .
docker
gère les conteneurs uniques
docker-compose
gère plusieurs applications en conteneur
Utilisation de docker-compose nécessite 3 étapes :
docker-compose up
pour démarrer et exécuter l'applicationVous 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: {}
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.
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 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.