web-dev-qa-db-fra.com

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

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 ça aura le même état. Y a-t-il une différence entre les deux commandes?

93
Michael Villeneuve

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

Démarre les conteneurs existants pour un service.

docker-composer jusqu'à
( https://docs.docker.com/compose/reference/up/ )

Construit, (re) crée, démarre et 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 commande docker-compose up agrège la sortie de chaque conteneur (en exécutant essentiellement docker-compose logs -f). Lorsque la commande se ferme, tous les conteneurs sont arrêtés. Lancer docker-compose up -d lance les conteneurs en arrière-plan et les laisse fonctionner.

S'il existe des conteneurs pour un service et si la configuration ou l'image du service a été modifiée après la création du conteneur, docker-compose up ré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'indicateur --no-recreate.

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

137
Luiz Lago

Dans docker Foire aux questions, cela s’explique très clairement:

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

Généralement, vous voulez docker-composeup. Utilisez up pour démarrer ou redémarrer tous les services définis dans un 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 de s'exécuter en arrière-plan.

La commande d'exécution docker-compose est destinée à l'exécution de tâches "ponctuelles" ou "adhoc". Il nécessite le nom du service que vous souhaitez exécuter et ne démarre que les conteneurs des services dont dépend le service en cours d'exécution. Utilisez run pour exécuter des tests ou effectuer une tâche administrative telle que la suppression ou l'ajout de données à un conteneur de volumes de données. La commande run agit comme docker run -ti dans le sens où elle ouvre un terminal interactif au conteneur et renvoie un statut de sortie correspondant au statut de sortie du processus dans le conteneur.

La commande docker-compose start est utile uniquement pour redémarrer les conteneurs précédemment créés, mais arrêtés. Il ne crée jamais de nouveaux conteneurs.

3
Supun Praneeth