Was ist der Unterschied zwischen Docker-Compose-Up und Docker-Compose-Start?

124

Wann immer ich ausführe

docker-compose start 
docker-compose ps

Ich sehe meine Container mit dem Status "UP". Wenn ich mache

docker-compose up -d

Ich werde ausführlicher sehen, aber es wird den gleichen Zustand haben. Gibt es einen Unterschied zwischen beiden Befehlen?

Michael Villeneuve
quelle

Antworten:

166

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

Startet vorhandene Container für einen Dienst.

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

Erstellt, (neu) erstellt, startet und hängt Container für einen Service an.

Sofern sie nicht bereits ausgeführt werden, startet dieser Befehl auch alle verknüpften Dienste.

Der docker-compose upBefehl aggregiert die Ausgabe jedes Containers (im Wesentlichen ausgeführt docker-compose logs -f). Wenn der Befehl beendet wird, werden alle Container gestoppt. Beim Ausführen werden docker-compose up -ddie Container im Hintergrund gestartet und ausgeführt.

Wenn für einen Dienst bereits Container vorhanden sind und die Konfiguration oder das Image des Dienstes nach der Erstellung des Containers geändert wurde, docker-compose upwerden die Änderungen durch Anhalten und Neuerstellen der Container (Beibehalten der bereitgestellten Volumes) übernommen. Verwenden Sie das --no-recreateFlag , um zu verhindern, dass Compose Änderungen aufnimmt.

Für die vollständige CLI-Referenz:
https://docs.docker.com/compose/reference/

Luiz Lago
quelle
3
aktualisierter Link zur Docker-Compose-CLI-Referenz: docs.docker.com/compose/reference * Docker-Compose up: docs.docker.com/compose/reference/up * Docker-Compose-Start: docs.docker.com/compose/reference / Start
Michael
18

Im Docker Häufig gestellte Fragen wird dies sehr deutlich erklärt:

Was ist der Unterschied zwischen Hochfahren, Ausführen und Starten?

Normalerweise möchten Sie docker-compose up. Verwenden Sie updiese Option, um alle in a definierten Dienste zu starten oder neu zu starten docker-compose.yml. Im Standardmodus "Anhängt" sehen Sie alle Protokolle aller Container. Im "getrennten" Modus ( -d) wird Compose nach dem Starten der Container beendet, die Container werden jedoch weiterhin im Hintergrund ausgeführt.

Der docker-compose runBefehl dient zum Ausführen von "einmaligen" oder "Ad-hoc" -Aufgaben. Es erfordert den Dienstnamen, den Sie ausführen möchten, und startet nur Container für Dienste, von denen der ausgeführte Dienst abhängt. Verwenden Sie run diese Option , um Tests auszuführen oder eine Verwaltungsaufgabe auszuführen, z. B. das Entfernen oder Hinzufügen von Daten zu einem Datenvolumencontainer. Der runBefehl verhält sich so, docker run -tidass er ein interaktives Terminal für den Container öffnet und einen Exit-Status zurückgibt, der dem Exit-Status des Prozesses im Container entspricht.

Der docker-compose startBefehl ist nur nützlich, um Container neu zu starten, die zuvor erstellt, aber gestoppt wurden. Es werden niemals neue Container erstellt.

Supun Praneeth
quelle
Wie unterscheidet sich der Befehl zum Neustart von diesen - Ausführen, Starten, Starten?
Nag