Unterschied zwischen AUSFÜHREN und CMD in einem docker-Datei
Ich bin verwirrt Wann sollte ich CMD
vs RUN
. Beispielsweise zum ausführen von bash - /shell-Kommandos (d.h. ls -la
) ich würde immer verwenden Sie CMD
oder ist es eine situation, wo ich mit RUN
? Versuche zu verstehen, die besten Praktiken über diese zwei ähnliche Dockerfile
Richtlinien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
LAUFEN ist eine image-Erstellung Schritt, den Zustand der container nach einem
RUN
Befehl begangen werden, um die docker-image. Ein Dockerfile kann vieleRUN
Schritte, die layer übereinander zu bauen das Bild.CMD ist der Befehl den container führt standardmäßig, wenn Sie starten Sie den integrierten Bild. Ein Dockerfile kann nur eine
CMD
. DieCMD
können überschrieben werden, beim Start einen Behälter mitdocker run $image $other_command
.ENTRYPOINT ist auch eng mit
CMD
und ändern kann, die Möglichkeit, einen container beginnt ein Bild.RUN
benötigt, um das setup Ihrer Umgebung, und Ihre (einzige) CMD startet der Prozess läuft in einem container, Beispiel für nginx, Auszug aus github.com/nginxinc/docker-nginx/blob/... Sie sehen, die ZeileCMD ["nginx", "-g", "daemon off;"]
RUN - Befehl auslöst, während wir bauen das Andockfenster Bild.
CMD - Befehl auslöst, während wir starten die erstellt docker-image.
Fand ich diese Artikel sehr hilfreich um den Unterschied zu verstehen zwischen Ihnen:
LAUFEN -
RUN-Anweisung können Sie Ihre Anwendung installieren und Pakete
erforderlich für es. Es führt alle Befehle zum aktuellen Bild
und erstellt eine neue Ebene, indem Sie sich die Ergebnisse an. Oft finden Sie
mehrfache AUSFÜHREN von Anweisungen in einem Dockerfile.
CMD -
CMD-Anweisung können Sie ein Standard-Befehl, die
nur ausgeführt, wenn Sie Sie ausführen container ohne Angabe eines Befehls.
Wenn Docker-container läuft mit einem Befehl, der standardmäßig wird der Befehl
ignoriert. Wenn Dockerfile hat mehr als eine CMD-Anweisung, alle, aber Letzte
CMD-Anweisungen werden ignoriert.
vom docker-Datei Referenz
https://docs.docker.com/engine/reference/builder/#cmd
LAUFEN - Install Python , Ihre container hat jetzt die python-verbrannt in seinem Bild
CMD - python hello.py führen Sie Ihre Lieblings-Skript
Befehl AUSFÜHREN:
RUN-Befehl wird im Grunde führen Sie den Standard Befehl, wenn wir Gebäude das Bild. Es wird sich auch verpflichten, das Bild wechselt zum nächsten Schritt.
Kann es mehr als 1 Befehl AUSFÜHREN, Hilfe bei der Erstellung eines neuen Bildes werden.
CMD-Befehl:
CMD-Befehle werden nur die default-Befehl für den neuen container. Wird dies nicht ausgeführt werden, zur build-Zeit.
Wenn ein Andockfenster Datei hat mehr als 1 CMD-Befehle dann alle von Ihnen werden ignoriert, außer der letzten. Als dieser Befehl wird alles, was nicht ausgeführt sondern nur die default-Befehl.