Eine der gängigen Richtlinien in einer Dockerfile ist die Einstiegspunktanweisung. Diese Richtlinie gibt ausführbare Dateien an, die während der Containererstellung aus dem Dockerfile -Bild ausgeführt wird.
In diesem Leitfaden wird untersucht.
Grundnutzung
Die Einstiegspunktanweisung in einer Dockerfile nimmt zwei Formen an, Exec -Form Und Muschelform. Eine Einstiegspunktanweisung im Dockerfile verhindert, dass der Container automatisch starten und anhalten.
Die allgemeine Syntax für die Einstiegspunktanweisung lautet:
EXEC -Form:
Eintragspunkt [exec, Option1, Option2… OptionN]
Der Exec repräsentiert die ausführbare Datei zum Ausführen; Die Optionen sind die Parameter, die zur ausführbaren Datei ausgeführt werden müssen.
Die andere Form der EnteryPoint -Richtlinie ist die Shellform. Die Shell -Form wird als Unterbefehl aus /bin /sh -c [Befehl] ausgeführt. Die allgemeine Syntax für dieses Formular lautet wie:
Befehlsbefehl option1, Option2… Option
In ähnlicher Weise ist der Befehl eine ausführbare Shell, während die Optionen die Parameter an den Befehl darstellen.
Wie der Einstiegspunkt funktioniert
Kurz gesagt ermöglicht die Einstiegspunktanweisung in einer Dockerfile, dass die aus dem Bild erstellten Container eine ausführbare Datei nach der Erstellung ausführen können. Leider verhalten sich die beiden Formen der Einstiegspunktanweisung unterschiedlich:
Die Shell -Form der Einstiegspunktanweisung unterstützt keine Befehlsargumente beim Starten des Containers. Im Gegensatz zu EXEC -Form, das die ausführbare Datei im Hintergrund ausführt.
Andererseits unterstützt das Exec -Formular Argumente während der Containererstellung. Dies bedeutet, dass der Befehl nach der ausführbaren Datei ausgeführt wird, die im Einstiegspunkt festgelegt ist. Wenn Sie beispielsweise dem Befehl Docker eine Option hinzufügen. Darüber hinaus können Sie Docker den Einstiegspunktwert überschreiben, indem Sie die Option -entryPoint während der Containererstellung verwenden.
Beispiel 1: Exec -Formular
Lassen Sie uns veranschaulichen, wie das Exec -Formular funktioniert. In diesem Beispiel verwenden wir ein Nginx -Bild als Testfall.
Ein Beispiel Dockerfile enthält die Einträge als:
Von Debian: Neueste
Führen Sie APT-Get-Update && \ aus
APT -Get Install -y nginx
Label sorteer = "linuxHint"
Label Version = "1.0 "
Label Beschreibung = "Ein einfaches Bild, das Nginx auf Debain 10 läuft"
80/TCP freilegen
Eintragspunkt ["nginx", "-g", "Daemon Off;" ]
Erstellen wir das Bild aus der Docker -Datei als:
Docker Build - -PULL - -RM -f "Dockerfile -T nginx: Custom"."
Lassen Sie uns mit dem Bild einen Container erstellen und eine Shell in den Container starten.
Docker Exec -it F3538752D6C3 Bash
Lassen Sie uns in der Containerschale grundlegende Befehle durchführen und einige Pakete installieren.
root@f3538752d6c3:/# sudo APT-Get Update && apt-Get Installieren Sie HTOP
Wenn Sie HTOP im Container ausführen, erhalten Sie eine ähnliche Ausgabe wie unten:
Wenn Sie alle Nginx -Arbeiterprozesse und HTOP ignorieren, bemerken Sie, dass der Hauptnginx -Daemon als PID von 1 ausgeführt wird.
Beispiel 2: Shell -Formular
Wenn Sie die Dockerfile ändern, um sie wie in den folgenden Einträgen darzustellen:
Von Debian: Neueste
Führen Sie APT-Get-Update && \ aus
APT -Get Install -y nginx
Label sorteer = "linuxHint"
Label Version = "1.0 "
Label Beschreibung = "Ein einfaches Bild, das Nginx auf Debain 10 läuft"
80/TCP freilegen
Einstiegspunkt "nginx" "-G" "Daemon Off;"
Erstellen Sie das Bild und erstellen Sie einen Container.
Docker Build - -Pull - -RM -f "Dockerfile.DockerFile "-t nginx: benutzerdefiniert"."
Docker Run -d --Name nginx-exec-form nginx: benutzerdefiniert
Wenn wir im Container den Befehl htop ausführen, sehen wir, dass der Nginx -Arbeitsprozess unter /bin /sh -c als:
Sie können auch eine ähnliche Ausgabe erhalten, indem Sie den Container mit dem Befehl Docker Inspect untersuchen wie:
Schnelle Zusammenfassung
Es ist gut, den Docker -Einstiegspunkt und die Docker CMD -Richtlinien nicht zu verwirren. Obwohl beide Richtlinien die Befehle an Docker definieren, führt während der Laufzeit Container aus:
Stellen Sie sicher.
Verwenden Sie CMD, um Standardargumente für Einstiegspunkte zu definieren oder AD-hoc-Befehle im Container auszuführen.
NOTIZ: CMD -Argumente werden beim Ausführen des Containers mit anderen Argumenten überschrieben.
Wie bereits erwähnt, sollte eine Dockerfile entweder eine CMD- oder die Einstiegspunktanweisung enthalten.
Abschließend.
Zusammenfassend ist Docker Entrypoint eine viel geeignete Wahl bei der Definition der ausführbaren Datei für die Container. Um mehr zu erfahren, überprüfen Sie die Dokumentation.