In der Praxis mache ich Folgendes, um einen Container zu starten :
docker run a8asd8f9asdf0
Wenn dies der Fall ist, was bewirkt:
docker start
machen?
Im Handbuch steht
Starten Sie einen oder mehrere gestoppte Container
execute
?
In der Praxis mache ich Folgendes, um einen Container zu starten :
docker run a8asd8f9asdf0
Wenn dies der Fall ist, was bewirkt:
docker start
machen?
Im Handbuch steht
Starten Sie einen oder mehrere gestoppte Container
execute
?
Antworten:
Dies ist eine sehr wichtige Frage und die Antwort ist sehr einfach, aber grundlegend:
docker run IMAGE_ID
und nicht docker run CONTAINER_ID
docker stop CONTAINER_ID
, können Sie denselben Container mit dem Befehl neu starten docker start CONTAINER_ID
, und die Daten und Einstellungen sind identisch.docker rm container_id
) immer verloren . Auf der anderen Seite überleben Volumendaten das Entfernen des Containers, sofern die -v
Option nicht explizit in der Befehlszeile angegeben ist. Der Volume-Standort auf dem Host-System kann direkt überprüft werden. Siehe diesen Artikel
&
am Ende der run
Kommandozeile benötigen ? Ich brauche es als Countinous (24 Stunden) Service
run
führt ein Bild ausstart
startet einen Container .Der docker run
Arzt erwähnt:
Der
docker run
Befehl erstellt zuerst eine beschreibbare Containerebene über dem angegebenen Bild und startet sie dann mit dem angegebenen Befehl.Das heißt, Andockfensters Lauf an die API entspricht
/containers/create
dann/containers/(id)/start
.
Sie führen keinen vorhandenen Container aus, sondern führen Docker aus (seit Docker 1.3) .
Sie können einen verlassenen Container neu starten .
-i
um docker run
einen interaktiven Prozess? Ich meine, Docker Run benötigt ein Image, um einen Container auszuführen.
Erklärung mit einem Beispiel:
Angenommen, Sie haben ein Spielbild (ISO) auf Ihrem Computer.
Wenn Sie run
(Ihr Image als virtuelles Laufwerk bereitstellen), wird ein virtuelles Laufwerk mit allen Spielinhalten auf dem virtuellen Laufwerk erstellt und die Spielinstallationsdatei wird automatisch gestartet. [Ausführen Ihres Docker-Images - Erstellen eines Containers und anschließendes Starten.]
Wenn Sie es jedoch stop
(ähnlich wie Docker) stoppen, ist das virtuelle Laufwerk weiterhin vorhanden, stoppt jedoch alle Prozesse. [Da der Container existiert, bis er nicht gelöscht wird]
Und wenn Sie dies tun start
(ähnlich wie beim Docker-Start), starten die Spieledateien vom virtuellen Laufwerk aus ihre Ausführung. [Starten des vorhandenen Containers]
In diesem Beispiel - Das Spiel-Image ist Ihr Docker-Image und das virtuelle Laufwerk ist Ihr Container.
Die Antwort von daniele3004 ist schon ziemlich gut.
Nur eine schnelle und schmutzige Formel für Leute wie ich, mischt run
und start
von Zeit zu Zeit:
docker run [...]
= docker pull [...]
+docker start [...]
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.
(Quelle: docs.docker.com/engine/reference/commandline/run )
run
Der Befehl erstellt einen Container aus dem Image und startet dann den Root-Prozess für diesen Container. Wenn Sie es mit run --rm
Flag ausführen, sparen Sie sich die Mühe, den nutzlosen toten Container anschließend zu entfernen, und können die Existenz von docker start
und docker remove
insgesamt ignorieren .
run
Befehl macht ein paar verschiedene Dinge:
docker run --name dname image_name bash -c "whoami"
docker ps
bash -c "whoami"
. Wenn man docker run --name dname image_name
ohne einen Befehl zum Ausführen des Containers läuft , wird der Container sofort gestoppt.docker remove
bevor man einen Container unter demselben Namen startet.Wie entferne ich einen Behälter, wenn er automatisch gestoppt wird? Fügen Sie--rm
demrun
BefehleinFlag hinzu:
docker run --rm --name dname image_name bash -c "whoami"
Wie führe ich mehrere Befehle in einem einzigen Container aus? Indem verhindert wird, dass dieser Wurzelprozess stirbt. Dies kann erreicht werden, indem ein nutzloser Befehl beim Start mit dem--detached
Flag ausgeführt wird und dann "Ausführen" verwendet wird, um die tatsächlichen Befehle auszuführen:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
Warum brauchen wir docker stop
dann? Um diesen verweilenden Container zu stoppen, den wir im vorherigen Snippet mit dem Endlosbefehl gestartet habentail -f /dev/null
.