Docker Run vs Create


92

Was ist der Unterschied zwischen docker runund docker createBefehlen?

Ich benutze normalerweise runaber manchmal in der Dokumentation, die ich sehe create.

Docker --helperzählt

create    Create a new container
run       Run a command in a new container

Bedeutet das, dass runes verwendet wird, wenn wir einen Befehl an einen neuen Container übergeben müssen? Was ist das Ziel von createdann?

Antworten:


104

Aus der Docker- Dokumentation

Der Docker-Befehl create erstellt eine beschreibbare Containerebene über dem angegebenen Image und bereitet sie für die Ausführung des angegebenen Befehls vor. Die Container-ID wird dann in STDOUT gedruckt. Dies ähnelt Docker run -d, außer dass der Container nie gestartet wird . Sie können dann den Docker-Startbefehl verwenden, um den Container an einem beliebigen Punkt zu starten.

Dies ist nützlich , wenn Sie wollen einen Container einrichten Konfiguration vor der Zeit , so dass sie bereit ist , zu starten , wenn Sie es brauchen. Der Anfangsstatus des neuen Containers wird erstellt.


2
--Run betont die Ähnlichkeit und akzeptiert ALLE dieselben Argumente wie --create (mit nur --detach, --detach-keys und --sig-proxy), siehe docs.docker.com/v17.09 / engine / reference / commandline / run /…
Marvin

112

Technisch docker run= docker create+ docker start.


39
Eigentlich, und ich habe gerade ein paar Stunden damit verbracht, dies zu lernen, docker run= docker create+ docker start+ docker attach. Ohne attachläuft der gestartete Container im Hintergrund
Webbower

19

1
U schrieb "Docker Run erstellt den Container (wie Docker Create) und führt ihn aus." <--- zirkuläre Definition, und Sie haben den Unterschied zwischen exec und start und dem, was Sie als "run it it" bezeichnen, nicht festgestellt. (Und wenn Sie "run it it" sagen, wenn wir Ihre Definition von run in docker run betrachten, bedeutet dies "create and run", sodass Sie eine unendliche Zahl erhalten. Vermutlich meinen Sie also etwas weniger als das, wenn Sie sagen "Läuft es" .. aber dann sollten Sie "Läuft es" von Exec und Start unterscheiden, meinen Sie Start und Exec oder starten Sie einfach). Vielleicht bedeutet -d, keine Exec zu starten. und ohne -d ist start und exec
barlop

8

Die anderen Antworten haben dies abgedeckt, aber ich dachte, ich würde die entsprechenden Shell-Befehlszeilen anzeigen, weil es wirklich klar macht:

$ docker run myimage

ist das gleiche wie

$ docker start -a $(docker create myimage)

Hier docker createwird verwendet, um einen Container aus dem benannten Bild zu erstellen und die erstellte Container-ID auszugeben und docker startum den Container mit dieser ID zu starten. Die -aOption bewirkt, dass das Terminal angehängt wird, sodass der Container im Vordergrund ausgeführt wird. Dies ist das Standardverhalten von docker run.

Ein Container, der erstellt, aber nie gestartet wurde, hat einen CreatedStatus. das kann man mit sehen docker container ls -a.


5

Ich bin neu bei Docker und habe gerade angefangen, damit zu spielen.

Meiner Meinung nach führt Docker Run im Wesentlichen Folgendes aus: (in der Reihenfolge ..) Docker erstellen , Docker starten , Docker anhängen , da es sofort an die aktive Shell angehängt wird , nachdem Sie den Befehl 'run' ausgeführt haben.


1
Habe gerade einen Kommentar darüber gepostet, bevor ich deine Antwort bemerkt habe. Ich wünschte, ich hätte das vor ungefähr einer Stunde gesehen.
Webbower

-3

Docker Run dient im Wesentlichen zum Ausführen von Befehlen im Container.

docker run -it <Container Name> /bin/bash

Das Obige dient zum Erstellen eines Bash-Terminals. Und lassen Sie uns Bash-Befehle im Container verwenden.

Docker erstellen besteht darin, einen Container aus einem Docker-Image zu erstellen.

docker create -d /var/lib:/var/lib --name docker-ubuntu ubuntu

Das obige ist, um einem Docker einen Container mit dem Namen "Docker-Ubuntu" aus dem Bild "Ubuntu" zu erstellen.


1
Sie können darauf docker run -it <Container name>verzichten, dann / bin / bash zu tun. Zum Beispiel wird der Ruby eine ausführbare Datei namens irb automatisch ausführen. Sie können auch -d ausführen, dies geschieht mit Dockersamples / statischen Sites, die sich nicht anmelden. Ich denke, es macht keine Ausführung, aber es startet es einfach.
Barlop

Mit 'Docker Run' können Sie ausführen, wenn der Container bereits erstellt wurde, und dann erstellen, wenn nicht
Sergii Getman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.