2016-05-26 7 views

Antwort

109

RUN ist ein Image-Build-Schritt, der Status des Containers nach einem RUN-Befehl wird an das Docker-Image übergeben. Eine Dockerfile kann viele RUN Schritte haben, die übereinander liegen, um das Bild zu erstellen.

CMD ist der Befehl, den der Container standardmäßig ausführt, wenn Sie das integrierte Image starten. Eine Dockerfile kann nur eine CMD haben. Die CMD kann beim Starten eines Containers mit docker run $image $other_command überschrieben werden.

ENTRYPOINT ist auch eng verwandt mit CMD und kann ändern, wie ein Container ein Image startet.

+0

Sie alle 'RUN'needed Setup - Installieren Sie Python, jetzt Ihr Container Python verbrannt in seinem Bild
CMD hat Umgebung, und Ihre (einzige) CMD startet den Prozess in Ihrem Container ausgeführt, Beispiel, für nginx, extrahieren von https://github.com/nginxinc/docker-nginx/blob/2f25936db78f98a4fac8e9fd9ac8ff53f244d3ea/mainline/jessie/Dockerfile Sie sehen die Zeile 'CMD [" nginx "," -g "," Daemon off; "]' ' – user2915097

21

Ich fand this Artikel sehr hilfreich, um den Unterschied zwischen ihnen zu verstehen:

RUN - RUN Anweisung Sie Ihre Anwendung und Pakete für sie erforderlich installieren. Es führt alle Befehle über dem aktuellen Bild aus und erstellt eine neue Ebene, indem es die Ergebnisse festschreibt. Oft finden Sie mehrere RUN-Anweisungen in einer Dockerfile.

CMD - CMD-Befehl können Sie einen Standardbefehl setzen, die nur dann ausgeführt wird, wenn Sie Container laufen, ohne einen Befehl angibt. Wenn der Docker-Container mit einem Befehl ausgeführt wird, wird der Standardbefehl ignoriert. Wenn Dockerfile mehr als einen CMD-Befehl hat, werden alle bis auf die letzten
CMD-Befehle ignoriert.

7

RUN - Befehl auslöst, während wir die Docker Bild aufzubauen.

CMD - Befehl löst aus, während wir das erstellte Docker-Image starten.

0

RUN - Ihre Python hello.py, führen Sie Ihre Lieblings-Skript