In Dockerfile können run, cmd und entrypoint zum Ausführen von Befehlen verwendet werden. Hier sind ihre Hauptverwendungen:
Ausführen von Befehlen im Shell- und Exec-FormatWir können die von „run“, „cmd“ und „entrypoint“ auszuführenden Befehle in den folgenden zwei Formaten angeben:
Es wird empfohlen, für cmd und Entrypoint das Exec-Format zu verwenden, da die Anweisungen besser lesbar und leichter verständlich sind, während für „run“ beide Formate akzeptabel sind. Fallstricke beim Exec-FormatDer Inhalt der Docker-Datei ist wie folgt: Umgebungsname Morris Einstiegspunkt ["echo", "$name"] Diese Schreibweise gibt nur „$name“ aus und ersetzt die Variable nicht, da nur der Echo-Befehl und nicht die Shell ausgeführt wird. Dies bedeutet, dass wir echo nicht in der Shell ausführen, sondern einfach echo ausführen, sodass die Variable nicht ersetzt wird. Um es in eine ausführbare Shell umzuwandeln, müssen Sie es in die folgende Form umschreiben Umgebungsname Morris Einstiegspunkt ["/bin/bash", "-c", "echo $name"] Befehl ausführenDer Befehl „Ausführen“ wird häufig zum Installieren von Anwendungen und Softwarepaketen verwendet. „run“ führt den Befehl über dem aktuellen Bild aus und erstellt eine neue Bildebene. Dockerfile enthält oft mehrere Ausführungsanweisungen. Hier ist ein Beispiel: Führen Sie „yum update && yum install -y \“ aus. bzr \ Lebenslauf \ git \ Quecksilber \ Subversion yum update und yum install werden in einem Run-Befehl ausgeführt, wodurch sichergestellt wird, dass jedes Mal das neueste Paket installiert wird. Wenn „yum install“ in einem separaten Lauf ausgeführt wird, wird die von „yum update“ erstellte Image-Ebene verwendet, die möglicherweise vor langer Zeit zwischengespeichert wurde. cmd-BefehlMit der cmd-Direktive kann der Benutzer den vom Container ausgeführten Standardbefehl angeben. Dieser Befehl wird ausgeführt, wenn der Container gestartet wird und mit „docker run“ kein anderer Befehl angegeben ist. Hier ist ein Beispiel: cmd echo "Hallo Welt" Beim Ausführen des Containers
Wenn jedoch danach ein Befehl hinzugefügt wird, etwa
Wenn mehrere cmd-Befehle vorhanden sind, wird nur der letzte cmd-Befehl ausgeführt. Entrypoint-BefehlDas Exec-Format des Einstiegspunkts wird verwendet, um den Befehl und seine Parameter festzulegen, die beim Starten des Containers ausgeführt werden sollen. Zusätzliche Parameter können über den Befehl cmd oder Befehlszeilenparameter bereitgestellt werden. Im Gegensatz zum cmd-Befehl werden immer die Parameter im Entrypoint verwendet. Hier ist ein Beispiel: Einstiegspunkt ["Echo", "Hallo"] Wenn der Container über
Wenn es mit
Schauen wir uns ein weiteres Beispiel an. Das Dockerfile ist: Einstiegspunkt ["Echo", "Hallo"] cmd ["Welt"] Wenn der Container über
Wenn Sie es mit
Die Parameter im Einstiegspunkt werden immer verwendet, während die zusätzlichen Parameter von cmd beim Starten des Containers dynamisch ersetzt werden können. Wenn mehrere Einstiegspunktbefehle vorhanden sind, wird entsprechend nur der letzte Einstiegspunktbefehl ausgeführt. Zusammenfassen
Dies ist das Ende dieses Artikels über die Unterschiede zwischen run/cmd/entrypoint in Docker. Weitere relevante Inhalte zu Docker run/cmd/entrypoint finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der drei Phasen der Entwicklung eines visuellen Designers
>>: Detaillierte Erklärung des MySQL-Datenbank-LIKE-Operators in Python
Transaktionale Merkmale 1. Atomarität: Nach dem S...
1. Aktualisieren Sie die gesamte Tabelle. Wenn de...
Hintergrund Ehe wir uns versehen, neigt sich ein ...
Ich habe vor Kurzem etwas über Stapelkontexte gel...
In diesem Artikelbeispiel wird der spezifische Co...
Situationsbeschreibung: Die Datenbank wurde abnor...
Tomcat definiert intern mehrere ClassLoader, soda...
Code kopieren Der Code lautet wie folgt: <!DOC...
Die Tabellenpartitionierung unterscheidet sich vo...
1. Hintergrund In tatsächlichen Projekten stoßen ...
systemd: Das Service-Systemctl-Skript von CentOS ...
Vorwort Beim Schreiben von Front-End-Code kommt m...
Inhaltsverzeichnis 1. Einleitung 1.1 Grundsatz 1....
/****************** * Zeitverwaltung des Linux-Ke...
Gestern wollte ich a:visited verwenden, um die Fa...