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
Freigeben: 2020-07-27 11:20:40
Original
10525 Leute haben es durchsucht

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 ”]
Nach dem Login kopieren

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

docker run ec
Nach dem Login kopieren

gibt Folgendes aus:

this is a echo test
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

wird nicht ausgegeben:

this is a echo test
Nach dem Login kopieren
Nach dem Login kopieren

, 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"]
Nach dem Login kopieren

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”
Nach dem Login kopieren

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"]
Nach dem Login kopieren

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

docker run -it st /etc/fstab
Nach dem Login kopieren

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)
Nach dem Login kopieren

Weg 2:

ENTRYPOINT command param1 param2 (shell form)
Nach dem Login kopieren

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"]
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage