Was ist der getrennte Modus in der Docker-Welt? Ich habe diesen Artikel Link gelesen , aber er erklärt nicht genau, was abgetrennter Modus bedeutet.
Was ist der getrennte Modus in der Docker-Welt? Ich habe diesen Artikel Link gelesen , aber er erklärt nicht genau, was abgetrennter Modus bedeutet.
Antworten:
Mit einer -d
Option können Sie einen Docker-Container im getrennten Modus starten . Der Container startet und läuft im Hintergrund. Das heißt, Sie starten den Container und können die Konsole nach dem Start für andere Befehle verwenden.
Das Gegenteil des getrennten Modus ist der Vordergrundmodus. Dies ist der Standardmodus, wenn die -d
Option nicht verwendet wird. In diesem Modus wird die Konsole, die Sie zum Ausführen verwenden docker run
, an Standardeingaben, -ausgaben und -fehler angeschlossen. Das bedeutet, dass Ihre Konsole an den Prozess des Containers angeschlossen ist.
Im getrennten Modus können Sie die Standardausgabe Ihres Docker-Containers mit verfolgen docker logs -f <container_ID>
.
Probieren Sie einfach beide Optionen aus. Ich verwende immer den getrennten Modus, um meine Container auszuführen. Ich hoffe ich konnte es etwas klarer erklären.
docker logs -f [container_ID] > logs.txt
. Wenn es nicht funktioniert, fügen Sie beim Starten des Docker-Containers das Flag '-it' hinzu, wie von @BMitch unten vorgeschlagen.
Die Option zum Trennen in der Docker-Befehlszeile gibt an, dass der Docker-Client ( docker
) eine Anforderung an den Server ( dockerd
) sendet und der Client dann beendet wird, während diese Anforderung auf dem Server fortgesetzt wird. Ein Teil der Verwirrung kann sein, dass Docker wie ein einzelner Prozess aussieht, wobei es sich in Wirklichkeit um eine Client / Server-Anwendung handelt, bei der der Client nur ein dünnes Frontend auf einer REST-API ist, um jeden Befehl an den Server zu senden.
Mit a docker container run --detach
bedeutet dies, dass der Container erstellt wird, der Server bei Erfolg mit einer Container-ID antwortet und der Container weiterhin auf dem Server ausgeführt wird, während Sie andere Befehle ausführen können. Dies wird häufig für einen Server (z. B. Nginx) verwendet, den Sie im Hintergrund starten möchten, während Sie andere Befehle ausführen. Beachten Sie, dass Sie weiterhin einen Container mit den Optionen --interactive
und konfigurieren -tty
können (häufig abgekürzt -it
) und später a ausführen können, um eine docker container attach
Verbindung zu einem bereits ausgeführten Container herzustellen. (Beachten Sie -itd
, dass jeder Versuch des Containers, aus stdin zu lesen, hängen bleibt , bis Sie eine Verbindung zu dem Container herstellen, mit dem ausgeführt wird, anstatt ein Ende der Eingabe zu sehen, das häufig einen sofortigen Beenden auslöst, wenn Sie gerade bestanden haben -d
.)
Wenn Sie ohne die Option "Trennen" ausführen, führt der Client sofort nach dem Erstellen des Containers einen API-Aufruf zum Anhängen aus, damit Sie die Ausgabe sehen und optional Eingaben für den laufenden Prozess auf dem Container bereitstellen können. Dies ist nützlich, wenn in Ihrem Container etwas Interaktives ausgeführt wird (z /bin/bash
. B. ).
Mehrere andere Befehle ermöglichen die Option zum Trennen, einschließlich docker-compose up -d
der Option, mit der ein gesamtes Projekt gestartet und im Hintergrund auf dem Server ausgeführt wird. Es gibt auch viele docker service
Befehle, die entweder getrennt werden, nachdem die Änderung an den Server gesendet wurde, um den Zielstatus eines Dienstes zu erstellen oder zu aktualisieren, oder wenn Sie nicht trennen, wartet der Client, bis der aktuelle Status des Dienstes mit dem Zielstatus übereinstimmt, und Sie können sehen den Fortschritt der Bereitstellung. Beachten docker service
Sie, dass Sie bei Befehlen möglicherweise übergeben müssen, um verbunden --detach=false
zu bleiben. Das Verhalten hat sich im letzten Jahr abhängig von Ihrer Version geändert.
--detach-keys
)
--interactive
und --tty
(aka -it
) an den Container angeschlossen sind , damit dies funktioniert.
docker run -d -t ubuntu:14.04
Docker-Lauf - Erstellen Sie eine Instanz aus dem Docker-Image als Docker-Container. (Wenn das Image lokal nicht verfügbar ist, wird es vom Docker-Hub abgerufen.) ubuntu - Bildname
14.04 - Tag
-d, --detach - Trennmodus
-t, --tty - Ordne ein Pseudo-TTY zu