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

124

Chaque fois que j'exécute

docker-compose start 
docker-compose ps

Je vois mes conteneurs avec l'état "UP". Si je fais

docker-compose up -d

Je verrai plus verbeux mais il aura le même état. Y a-t-il une différence entre les deux commandes?

Michael Villeneuve
la source

Réponses:

166

docker-compose start
( https://docs.docker.com/compose/reference/start/ )

Démarre les conteneurs existants pour un service.

docker-compose up
( https://docs.docker.com/compose/reference/up/ )

Construit, (re) crée, démarre et s'attache à des conteneurs pour un service.

À moins qu'ils ne soient déjà en cours d'exécution, cette commande démarre également les services liés.

La docker-compose upcommande agrège la sortie de chaque conteneur (essentiellement en cours d'exécution docker-compose logs -f). Lorsque la commande se termine, tous les conteneurs sont arrêtés. L'exécution docker-compose up -ddémarre les conteneurs en arrière-plan et les laisse en cours d'exécution.

S'il existe des conteneurs pour un service et que la configuration ou l'image du service a été modifiée après la création du conteneur, docker-compose uprécupère les modifications en arrêtant et en recréant les conteneurs (en préservant les volumes montés). Pour empêcher Compose de prendre en compte les modifications, utilisez l' --no-recreateindicateur.

Pour la référence CLI complète:
https://docs.docker.com/compose/reference/

Luiz Lago
la source
3
lien mis à jour vers la référence CLI de docker-compose: docs.docker.com/compose/reference * docker-compose up: docs.docker.com/compose/reference/up * docker-compose start: docs.docker.com/compose/reference / début
michael
18

Dans docker Foire aux questions, cela est expliqué très clairement:

Quelle est la différence entre up, run et start?

En règle générale, vous voulez docker-compose up. Utilisez uppour démarrer ou redémarrer tous les services définis dans un fichier docker-compose.yml. Dans le mode «attaché» par défaut, vous voyez tous les journaux de tous les conteneurs. En mode «détaché» ( -d), Compose se ferme après le démarrage des conteneurs, mais les conteneurs continuent à s'exécuter en arrière-plan.

La docker-compose runcommande sert à exécuter des tâches «ponctuelles» ou «adhoc». Il nécessite le nom du service que vous souhaitez exécuter et démarre uniquement les conteneurs pour les services dont dépend le service en cours d'exécution. Permet run d'exécuter des tests ou d'effectuer une tâche administrative telle que la suppression ou l'ajout de données à un conteneur de volume de données. La runcommande agit comme docker run -tisi elle ouvre un terminal interactif au conteneur et renvoie un état de sortie correspondant à l'état de sortie du processus dans le conteneur.

La docker-compose startcommande n'est utile que pour redémarrer des conteneurs qui ont été précédemment créés, mais qui ont été arrêtés. Il ne crée jamais de nouveaux conteneurs.

Supun Praneeth
la source
en quoi la commande de redémarrage est-elle différente de l'une d'entre elles - exécuter, démarrer, démarrer?
Nag