Heim >Betrieb und Instandhaltung >Docker >Was ist der Unterschied zwischen Einstiegspunkt und cmd unter Docker?

Was ist der Unterschied zwischen Einstiegspunkt und cmd unter Docker?

coldplay.xixi
coldplay.xixiOriginal
2020-07-27 11:20:4010530Durchsuche

Der Unterschied zwischen „entrypoint“ und „cmd“ unter Docker ist: 1. Der CMD-Befehl führt eine ausführbare Datei aus und stellt Parameter für ENTRYPOINT bereit. 2. Der ENTRYPOINT-Befehl selbst kann auch Parameter enthalten und geändert werden Parameter werden nicht abgedeckt.

Was ist der Unterschied zwischen Einstiegspunkt und cmd unter Docker?

Der Unterschied zwischen Einstiegspunkt und cmd unter Docker ist:

1 >

CMD stellt einige Befehle und Parameter bereit, wenn der Container ausgeführt wird. Die Verwendung ist wie folgt:

  • CMD ["executable", "param1", "param2" ] (exec-Form, dies ist die bevorzugte Form)

  • CMD ["param1", "param2"] (als Standardparameter für ENTRYPOINT)

  • CMD-Befehl param1 param2 (Shell-Formular)

Erste Verwendung: Führen Sie eine ausführbare Datei aus und geben Sie Parameter an.

Zweite Verwendung: Geben Sie Parameter für ENTRYPOINT an.

Die dritte Verwendung (Shell-Form): ist ein Befehl, der mit der Methode „/bin/sh -c“ ausgeführt wird.

Wenn Sie Folgendes angeben:

CMD [“/bin/echo”, “this is a echo test ”]

und nach dem Build ausführen (vorausgesetzt, das Image heißt ec):

docker run ec

gibt Folgendes aus:

this is a echo test

Nicht Fühlt es sich seltsam an? Wie bei Startup-Elementen kann man sie vorübergehend auf diese Weise verstehen.

Hinweis: Wenn der Befehl

Parameter angibt, werden die Parameter in CMD überschrieben: (Hier erklären, wie zum Beispiel: Die Parameter des Befehls docker run -it ubuntu /bin/bash beziehen sich auf /bin/bash docker run und sind nur Parameter von Docker, keine Parameter des Containers. -it

Derselbe ec-Image-Start oben:

docker run ec /bin/bash

wird nicht ausgegeben:

this is a echo test

, da der CMD-Befehl durch „/bin/bash“ überschrieben wird.

2. ENTRYPOINT-Anweisung

Die wörtliche Bedeutung ist Einstiegspunkt, und seine Funktion ist genau das, was er bedeutet. Dadurch kann Ihr Container wie ein ausführbares Programm funktionieren.

Die Containerfunktion verhält sich wie ein ausführbares Programm. Was bedeutet das?

Geben Sie mir direkt ein Beispiel:

Beispiel 1:

Verwenden Sie den folgenden ENTRYPOINT, um das Bild zu erstellen:

ENTRYPOINT ["/bin/echo"]

Dann wird der Container nach dem Erstellen des Bildes erstellt von Docker Die Funktion ist wie ein /bin/echo-Programm:

Zum Beispiel lautet der Name des von mir erstellten Images imageecho, dann kann ich es so verwenden:

docker  run  -it  imageecho  “this is a test”

Hier wird es Ausgabe „Dies ist ein Test“ Diese Zeichenfolge und der diesem Bild entsprechende Container verhält sich wie ein Echo-Programm. Der von Ihnen hinzugefügte Parameter „Dies ist ein Test“ wird nach ENTRYPOINT hinzugefügt und sieht folgendermaßen aus: /bin/echo „Dies ist ein Test“. Jetzt sollten Sie verstehen, was der Einstiegspunkt bedeutet.

Beispiel 2: Sie können das von

ENTRYPOINT ["/bin/cat"]

erstellte Bild wie folgt ausführen (vorausgesetzt, es heißt st):

docker run -it st /etc/fstab

Das ist äquivalent zu:

Was das ist Befehl funktioniert. Nach der Ausführung wird der Inhalt in /bin/cat  /etc/fstab ausgegeben. /etc/fstab

ENTRYPOINT hat zwei Schreibweisen:

Weg 1:

ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)

Weg 2:

ENTRYPOINT command param1 param2 (shell form)

Sie können auch Docker ausführen Verwenden Sie –entrypoint, um den Befehl anzugeben (Sie können jedoch nur die erste Schreibmethode verwenden).

Das Folgende ist die Betriebssituation, wenn ich ENTRYPOINT auf ["/bin/sh -c"] setze:

  • linux-oj9e:/home/lfly/project /docker # docker run -it t2 /bin/bash

  • root@4c8549e7ce3e:/# ps

  • PID TTY TIME CMD

  • 1 ? 00:00:00 sh

  • 9 ? 00:00:00 bash

  • 19 ? 00:00:00 ps

Sie können sehen, dass der Prozess mit PID 1 sh ausführt und Bash nur ein Unterprozess von sh ist und

direkt dahinter liegt /bin/bash Parameter. /bin/sh -c

CMD kann Parameter für ENTRYPOINT bereitstellen, und ENTRYPOINT selbst kann auch Parameter enthalten. Sie können jedoch beispielsweise die Parameter, die möglicherweise geändert werden müssen, in CMD und die Parameter, die nicht geändert werden müssen, in ENTRYPOINT schreiben :

FROM  ubuntu:14.10
ENTRYPOINT  ["top", "-b"]
CMD  ["-c"]

Schreiben Sie die Parameter, die möglicherweise geändert werden müssen, in CMD. Dann können Sie Parameter in Docker Run angeben, sodass die Parameter in CMD (hier -c) überschrieben werden, die in ENTRYPOINT jedoch nicht.

Empfohlene verwandte Tutorials:

Docker-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Einstiegspunkt und cmd unter Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn