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.
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!