1. Übersicht Es gibt drei Möglichkeiten, ein Docker-Image zu erstellen:
Eine allgemeine Beschreibung dieser drei Methoden finden Sie unter „Erstellen eines Images“ von yeasy/docker_practice. Ich habe kürzlich etwas über die Konfiguration der Dockerfile-Datei gelernt. Hier ist eine kurze Zusammenfassung und ein Vergleich der CMD- und ENTRYPOINT-Anweisungen, die mich zuvor verwirrt haben. 2. Dockerfile-Zusammenfassung Dockerfile besteht aus Befehlszeilen und unterstützt Kommentarzeilen, die mit # beginnen. Im Allgemeinen ist eine Docker-Datei in vier Teile unterteilt: Basis-Image-Informationen, Betreuerinformationen, Anweisungen zum Image-Betrieb und Anweisungen, die beim Starten des Containers ausgeführt werden sollen.
Die erste Anweisung der Dockerfile-Datei muss FROM sein, gefolgt von verschiedenen Anweisungen für Image-Operationen und schließlich CMD oder ENTRYPOINT, um den Befehl anzugeben, der beim Starten des Containers ausgeführt werden soll. Nachfolgend finden Sie eine Einführung in die verschiedenen Anweisungen im Dockerfile von yeasy/docker_practice: Anweisung Das allgemeine Format von Anweisungen besteht aus INSTRUCTION-Argumenten und Anweisungen umfassen FROM, MAINTAINER, RUN usw. AUS Das Format ist FROM <Bild> oder FROM <Bild>:<Tag>. Die erste Anweisung muss eine FROM-Anweisung sein. Wenn Sie mehrere Images in derselben Docker-Datei erstellen, können Sie außerdem mehrere FROM-Anweisungen verwenden (einmal für jedes Image). BEWAHRER Das Format ist MAINTAINER <Name>, das die Betreuerinformationen angibt. LAUFEN Das Format ist RUN <Befehl> oder RUN ["ausführbare Datei", "Param1", "Param2"]. Ersteres führt den Befehl im Shell-Terminal aus, nämlich /bin/sh -c; letzteres wird mit exec ausgeführt. Die Angabe der Verwendung anderer Terminals kann mit der zweiten Methode erfolgen, z. B. RUN ["/bin/bash", "-c", "echo hello"]. Jeder RUN-Befehl führt den angegebenen Befehl basierend auf dem aktuellen Image aus und übermittelt ihn als neues Image. Wenn der Befehl lang ist, können Sie ihn mit \ umschließen. CMD Unterstützt drei Formate CMD ["ausführbare Datei", "Param1", "Param2"] Verwenden Sie zur Ausführung exec. Dies ist die empfohlene Methode. Der CMD-Befehl param1 param2 wird in /bin/sh ausgeführt und Anwendungen bereitgestellt, die Interaktion benötigen; CMD ["param1","param2"] stellt Standardparameter für ENTRYPOINT bereit; Gibt den Befehl an, der beim Starten des Containers ausgeführt werden soll. Jedes Dockerfile kann nur einen CMD-Befehl haben. Wenn mehrere Befehle angegeben werden, wird nur der letzte ausgeführt. Wenn der Benutzer beim Starten des Containers einen auszuführenden Befehl angibt, wird der von CMD angegebene Befehl überschrieben. EXPONIEREN Das Format ist EXPOSE <Port> [<Port>...]. Teilen Sie dem Docker-Server die Portnummer mit, die der Container zur Verwendung durch verbundene Systeme freigibt. Beim Starten des Containers müssen Sie -P übergeben, und der Docker-Host weist automatisch einen Port zur Weiterleitung an den angegebenen Port zu. Umwelt Das Format ist ENV <Schlüssel> <Wert>. Gibt eine Umgebungsvariable an, die von nachfolgenden RUN-Anweisungen verwendet und beibehalten wird, während der Container ausgeführt wird. Zum Beispiel ENV PG_MAJOR 9.3 ENV PG_VERSION 9.3.4 FÜHREN SIE curl -SL http://example.com/postgres-$PG_VERSION.tar.xz aus | tar -xJC /usr/src/postgress && … ENV-PFAD /usr/local/postgres-$PG_MAJOR/bin:$PATH HINZUFÜGEN Das Format ist ADD <Quelle> <Ziel>. Dieser Befehl kopiert die angegebene <Quelle> nach <Ziel> im Container. Dabei kann <src> ein relativer Pfad zum Verzeichnis sein, in dem sich die Docker-Datei befindet; es kann auch eine URL sein; oder es kann eine TAR-Datei sein (automatisch in ein Verzeichnis dekomprimiert). KOPIE Das Format ist KOPIE <Quelle> <Ziel>. Kopieren Sie den <src> des lokalen Hosts (relativer Pfad zum Verzeichnis, in dem sich die Docker-Datei befindet) in den <dest> des Containers. Wenn Sie als Quellverzeichnis ein lokales Verzeichnis verwenden, empfiehlt sich die Verwendung von COPY. EINSTIEGSPUNKT Zwei Formate: EINSTIEGSPUNKT ["ausführbare Datei", "param1", "param2"] ENTRYPOINT-Befehl param1 param2 (in der Shell ausgeführt). Der nach dem Start des Konfigurationscontainers auszuführende Befehl kann nicht durch die von „docker run“ bereitgestellten Parameter überschrieben werden. In jedem Dockerfile kann nur ein ENTRYPOINT vorhanden sein. Wenn mehrere ENTRYPOINTs angegeben werden, wird nur der letzte wirksam. VOLUMEN Das Format ist VOLUME ["/Daten"]. Erstellen Sie einen Einhängepunkt, der vom lokalen Host oder anderen Containern eingehängt werden kann. Dieser wird im Allgemeinen zum Speichern von Datenbanken und Daten verwendet, die verwaltet werden müssen. BENUTZER Das Format ist USER-Daemon. Geben Sie beim Ausführen des Containers den Benutzernamen oder die UID an. Nachfolgende RUNs verwenden ebenfalls den angegebenen Benutzer. Wenn der Dienst keine Administratorrechte erfordert, können Sie den ausgeführten Benutzer über diesen Befehl angeben. Und Sie können die erforderlichen Benutzer vorher erstellen, zum Beispiel: RUN groupadd -r postgres && useradd -r -g postgres postgres. Um vorübergehend Administratorrechte zu erhalten, können Sie gosu verwenden, sudo wird jedoch nicht empfohlen. ARBEITSVERZEICHNIS Das Format ist WORKDIR /Pfad/zum/Arbeitsverzeichnis. Konfigurieren Sie das Arbeitsverzeichnis für nachfolgende RUN-, CMD- und ENTRYPOINT-Anweisungen. Es können mehrere WORKDIR-Direktiven verwendet werden. Wenn die Parameter nachfolgender Befehle relative Pfade sind, basieren sie auf den Pfaden, die in den vorherigen Befehlen angegeben wurden. Zum Beispiel ARBEITSVERZEICHNIS /a WORKDIR b WORKDIR c RUN-Kennwort Der endgültige Pfad ist /a/b/c. EINBAUEN Das Format ist ONBUILD [ANLEITUNG]. Konfigurieren Sie die Betriebsanweisungen, die ausgeführt werden sollen, wenn das erstellte Image als Basisimage für andere, neu erstellte Images verwendet wird. Beispielsweise erstellt das Dockerfile ein Image-A mit folgendem Inhalt. [...] ONBUILD HINZUFÜGEN ./app/src ONBUILD RUN /usr/local/bin/python-build --dir /app/src [...] Wenn Sie basierend auf Image A ein neues Image erstellen und FROM Image A verwenden, um das Basisimage in der neuen Docker-Datei anzugeben, wird der Inhalt der ONBUILD-Anweisung automatisch ausgeführt, was dem Hinzufügen von zwei Anweisungen am Ende entspricht. FROM image-A #Führen Sie automatisch Folgendes aus ADD . /app/src RUN /usr/local/bin/python-build --dir /app/src Bei Images, die die ONBUILD-Anweisung verwenden, wird empfohlen, dies im Tag anzugeben, zum Beispiel ruby:1.9-onbuild. 3. Erstellen Sie ein Bild Erstellen Sie nach dem Schreiben der Dockerfile-Datei ein benutzerdefiniertes Image, indem Sie den Befehl „Docker Build“ ausführen. Das Docker-Build-Befehlsformat ist wie folgt: docker build [Optionen] <Pfad> Dieser Befehl liest die Docker-Datei im angegebenen Pfad (einschließlich Unterverzeichnisse) und sendet den gesamten Inhalt des Pfads an den Docker-Server, der das Image erstellt. Daher wird generell empfohlen, dass das Verzeichnis, in dem die Docker-Datei abgelegt wird, ein leeres Verzeichnis ist. Sie können auch die Datei .dockerignore verwenden (fügen Sie pro Zeile ein passendes Muster hinzu), damit Docker die Verzeichnisse und Dateien unter dem Pfad ignoriert. Beispielsweise wird das folgende Dockerfile-Beispiel zum Erstellen des Images „test:0.0.1“ verwendet, wobei die Option „-t“ zum Angeben des Tags des Images verwendet wird. Der Inhalt der Docker-Datei ist wie folgt: VON Ubuntu:14.04 WARTUNGSPERSÖNLICHKEIT [email protected] FÜHREN SIE Mkdir /opt/leh aus FÜHREN Sie touch /opt/leh/test aus CMD echo „Hallo lienhua34“ Führen Sie als Nächstes den Befehl „Docker Build“ aus, um das Image „test:0.0.1“ zu generieren. lienhua34@test$ sudo docker build -t test:0.0.1 . Senden des Build-Kontexts an den Docker-Daemon 3.072 kB Schritt 1: VON ubuntu:14.04 ---> a5a467fddcb8 Schritt 2: MAINTAINER [email protected] ---> Wird ausgeführt in ce9e7b02f075 ---> 332259a92e74 Zwischenbehälter entfernen ce9e7b02f075 Schritt 3: RUN mkdir /opt/leh ---> Wird ausgeführt in e93f0a98040f ---> 097e177cf37f Zwischenbehälter ausbauen e93f0a98040f Schritt 4: FÜHREN Sie touch /opt/leh/test aus ---> Wird ausgeführt in f1531d3dea1a ---> 0f68852f8356 Zwischenbehälter entfernen f1531d3dea1a Schritt 5: CMD echo „Hallo lienhua34“ ---> Wird ausgeführt in cf3c5ce2af46 ---> 811ce27ce692 Zwischenbehälter entfernen cf3c5ce2af46 Erfolgreich erstellt 811ce27ce692 Starten Sie dann den Container des Images, um die Ergebnisse anzuzeigen. lienhua34@test$ sudo Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT VIRTUELLE GRÖSSE test 0.0.1 811ce27ce692 vor 32 Sekunden 187,9 MB lienhua34@test$ sudo docker run -ti test:0.0.1 Hallo lienhua34 Jede Anweisung in der Dockerfile-Datei generiert eine Ebene des Images (Hinweis: Ein Image kann nicht mehr als 127 Ebenen haben). Die Anweisungen im Dockerfile werden nacheinander ausgeführt. Jeder Schritt erstellt einen neuen Container, führt Anweisungen im Container aus und überträgt die Änderungen. Wenn alle Anweisungen ausgeführt wurden, wird die endgültige Bild-ID zurückgegeben. 4. Vergleich der CMD- und ENTRYPOINT-Anweisungen in der Dockerfile-Datei Die Funktionen des CMD-Befehls und des ENTRYPOINT-Befehls bestehen darin, den Befehl für das Image anzugeben, nachdem der Container gestartet wurde. Was sind also die jeweiligen Vorteile zwischen ihnen? Um die Unterschiede zwischen dem CMD-Befehl und dem ENTRYPOINT-Befehl besser vergleichen zu können, listen wir hier die Beschreibungen dieser beiden Befehle auf. CMD Unterstützt drei Formate CMD ["ausführbare Datei", "Param1", "Param2"] Verwenden Sie zur Ausführung exec. Dies ist die empfohlene Methode. Der CMD-Befehl param1 param2 wird in /bin/sh ausgeführt und Anwendungen bereitgestellt, die Interaktion benötigen; CMD ["param1","param2"] stellt Standardparameter für ENTRYPOINT bereit; Gibt den Befehl an, der beim Starten des Containers ausgeführt werden soll. Jedes Dockerfile kann nur einen CMD-Befehl haben. Wenn mehrere Befehle angegeben werden, wird nur der letzte ausgeführt. Wenn der Benutzer beim Starten des Containers einen auszuführenden Befehl angibt, wird der von CMD angegebene Befehl überschrieben. EINSTIEGSPUNKT Zwei Formate: EINSTIEGSPUNKT ["ausführbare Datei", "param1", "param2"] ENTRYPOINT-Befehl param1 param2 (in der Shell ausgeführt). Der nach dem Start des Konfigurationscontainers auszuführende Befehl kann nicht durch die von „docker run“ bereitgestellten Parameter überschrieben werden. In jedem Dockerfile kann nur ein ENTRYPOINT vorhanden sein. Wenn mehrere ENTRYPOINTs angegeben werden, wird nur der letzte wirksam. Aus der obigen Beschreibung können wir erkennen, dass es zwei Gemeinsamkeiten gibt:
Die Unterschiede zwischen ihnen sind wie folgt: Unterschied 1: Der beim Starten des Containers durch die CMD-Anweisung angegebene Befehl kann durch den durch Docker Run angegebenen Befehl überschrieben werden, während der durch die ENTRYPOINT-Anweisung angegebene Befehl nicht überschrieben werden kann. Stattdessen werden die durch Docker Run angegebenen Parameter als Parameter des durch ENTRYPOINT angegebenen Befehls verwendet. Unterschied 2: Der CMD-Befehl kann Standardparameter für den ENTRYPOINT-Befehl festlegen und diese durch von Docker Run angegebene Parameter überschrieben werden. Nachfolgend finden Sie eine detaillierte Erläuterung der beiden oben genannten Unterschiede. 4.1 Unterschied 1 Der beim Starten des Containers durch die CMD-Anweisung angegebene Befehl kann durch den durch Docker Run angegebenen Befehl überschrieben werden. Der durch die ENTRYPOINT-Anweisung angegebene Befehl kann jedoch nicht überschrieben werden. Stattdessen werden die durch Docker Run angegebenen Parameter als Parameter des durch ENTRYPOINT angegebenen Befehls verwendet. Unten finden Sie ein ausführbares Shell-Skript mit dem Namen „Startup“, dessen Funktion darin besteht, nur Befehlszeilenparameter auszugeben. Der Inhalt ist wie folgt: #!/bin/bash echo "beim Start, Argumente: $@" Geben Sie den Befehl an, wenn Sie den Container über CMD starten: Nun erstellen wir eine neue Dockerfile-Datei, die das Startskript in das Verzeichnis /opt des Containers kopiert und angibt, dass das Startskript beim Start des Containers über die CMD-Anweisung ausgeführt werden soll. Der Inhalt ist wie folgt: VON Ubuntu:14.04 WARTUNGSPERSÖNLICHKEIT [email protected] ADD-Start /opt Ausführen von chmod a+x /opt/startup CMD ["/opt/startup"] Anschließend generieren wir das Image „test:latest“, indem wir den Befehl „Docker Build“ ausführen. lienhua34@test$ sudo docker build -t test . Senden des Build-Kontexts an den Docker-Daemon 4.096 kB Schritt 1: VON ubuntu:14.04 ---> a5a467fddcb8 Schritt 2: MAINTAINER [email protected] ---> Cache verwenden ---> 332259a92e74 Schritt 3: ADD startup /opt ---> 3c26b6a8ef1b Zwischenbehälter entfernen 87022b0f30c5 Schritt 4: RUN chmod a+x /opt/startup ---> Wird ausgeführt in 4518ba223345 ---> 04d9b53d6148 Zwischenbehälter ausbauen 4518ba223345 Schritt 5: CMD /opt/startup ---> Wird ausgeführt in 64a07c2f5e64 ---> 18a2d5066346 Zwischenbehälter entfernen 64a07c2f5e64 Erfolgreich erstellt 18a2d5066346 Verwenden Sie dann Docker Run, um zwei Test:latest-Image-Container zu starten. Der erste Docker Run-Befehl gibt keinen Befehl zum Starten des Containers an. Der zweite Docker Run-Befehl gibt den Befehl zum Starten des Containers als „/bin/bash -c ‚echo Hello‘“ an. lienhua34@test$ sudo docker run -ti --rm=true test beim Start, Argumente: lienhua34@test$ sudo docker run -ti --rm=true test /bin/bash -c 'echo Hallo' Hallo Aus den obigen Laufergebnissen können Sie ersehen, dass der Ausführungsbefehl, der angegeben wird, wenn der Docker-Ausführungsbefehl den Container startet, den durch die CMD-Anweisung in der Dockerfile-Datei angegebenen Befehl überschreibt. Geben Sie den Befehl an, wenn der Container per ENTRYPOINT gestartet wird: Ersetzen Sie CMD im obigen Dockerfile durch ENTRYPOINT. Der Inhalt lautet wie folgt: VON Ubuntu:14.04 WARTUNGSPERSÖNLICHKEIT [email protected] Füge den Start von /opt hinzu AUSFÜHREN chmod a+x /opt/startup EINSTIEGSPUNKT ["/opt/startup"] Führen Sie auf ähnliche Weise Docker Build aus, um das Image „test:latest“ zu generieren. lienhua34@test$ sudo docker build -t test . Senden des Build-Kontexts an den Docker-Daemon 4.096 kB Schritt 1: VON ubuntu:14.04 ---> a5a467fddcb8 Schritt 2: MAINTAINER [email protected] ---> Cache verwenden ---> 332259a92e74 Schritt 3: ADD startup /opt ---> Cache verwenden ---> 3c26b6a8ef1b Schritt 4: RUN chmod a+x /opt/startup ---> Cache verwenden ---> 04d9b53d6148 Schritt 5: ENTRYPOINT /opt/startup ---> Wird ausgeführt in cdec60940ad7 ---> 78f8aca2edc2 Zwischenbehälter entfernen cdec60940ad7 78f8aca2edc2 erfolgreich erstellt Verwenden Sie dann Docker Run, um zwei Test:latest-Image-Container zu starten. Der erste Docker Run-Befehl gibt keinen Befehl zum Starten des Containers an. Der zweite Docker Run-Befehl gibt den Befehl zum Starten des Containers als „/bin/bash -c ‚echo Hello‘“ an. lienhua34@test$ sudo docker run -ti --rm=true test beim Start, Argumente: lienhua34@test$ sudo docker run -ti --rm=true test /bin/bash -c 'echo Hallo' beim Start, Argumente: /bin/bash -c echo Hallo Aus den obigen Laufergebnissen ist ersichtlich, dass der durch den Docker-Run-Befehl angegebene Container-Ausführungsbefehl den durch die ENTRYPOINT-Anweisung angegebenen Befehl in der Dockerfile-Datei nicht überschreiben kann, sondern als Parameter an den durch die ENTRYPOINT-Anweisung angegebenen Befehl übergeben wird. 4.2 Unterschied 2 Der CMD-Befehl kann Standardparameter für den ENTRYPOINT-Befehl festlegen und durch von Docker Run angegebene Parameter überschrieben werden. Verwenden Sie dasselbe Startskript wie oben. Schreiben Sie eine Docker-Datei mit folgendem Inhalt: VON Ubuntu:14.04 WARTUNGSPERSÖNLICHKEIT [email protected] ADD-Start /opt Ausführen von chmod a+x /opt/startup EINSTIEGSPUNKT ["/opt/startup", "arg1"] CMD ["arg2"] Führen Sie den Befehl „Docker Build“ aus, um das Image „test:latest“ zu generieren. lienhua34@test$ sudo docker build -t test . Senden des Build-Kontexts an den Docker-Daemon 4.096 kB Schritt 1: VON ubuntu:14.04 ---> a5a467fddcb8 Schritt 2: MAINTAINER [email protected] ---> Cache verwenden ---> 332259a92e74 Schritt 3: ADD startup /opt ---> Cache verwenden ---> 3c26b6a8ef1b Schritt 4: RUN chmod a+x /opt/startup ---> Cache verwenden ---> 04d9b53d6148 Schritt 5: ENTRYPOINT /opt/startup arg1 ---> Wird ausgeführt in 54947233dc3d ---> 15a485253b4e Zwischenbehälter entfernen 54947233dc3d Schritt 6: CMD arg2 ---> Wird ausgeführt in 18c43d2d90fd ---> 4684ba457cc2 Zwischenbehälter ausbauen 18c43d2d90fd Erfolgreich erstellt 4684ba457cc2 Führen Sie als Nächstes „docker run“ aus, um zwei test:latest-Imagecontainer zu starten. Der erste „docker run“-Befehl gibt keine Parameter an, und der zweite „docker run“-Befehl gibt den Parameter arg3 an. Die Ergebnisse sind wie folgt: lienhua34@test$ sudo docker run -ti --rm=true test beim Start, Argumente: arg1 arg2 lienhua34@test$ sudo docker run -ti --rm=true test arg3 beim Start, Argumente: arg1 arg3 Anhand der Laufergebnisse des ersten Containers oben können wir erkennen, dass der CMD-Befehl die Standardparameter für den ENTRYPOINT-Befehl festlegt; an den Laufergebnissen des zweiten Containers können wir erkennen, dass die durch den Befehl „docker run“ angegebenen Parameter die durch den CMD-Befehl angegebenen Parameter überschreiben. 4.3 Hinweise Die CMD-Anweisung stellt Standardparameter für die ENTRYPOINT-Anweisung basierend auf der Image-Hierarchie bereit, nicht basierend darauf, ob sie sich in derselben Dockerfile-Datei befindet. Dies bedeutet, dass, wenn das Docker-File den durch ENTRYPOINT im Basis-Image angegebenen Startbefehl angibt, die CMD im Docker-File weiterhin die Standardparameter für den ENTRYPOINT im Basis-Image festlegt. Beispielsweise haben wir das folgende Dockerfile: VON Ubuntu:14.04 WARTUNGSPERSÖNLICHKEIT [email protected] ADD-Start /opt Ausführen von chmod a+x /opt/startup EINSTIEGSPUNKT ["/opt/startup", "arg1"] Generieren Sie das Image „test:0.0.1“, indem Sie den Befehl „Docker Build“ ausführen, erstellen Sie dann einen Container für das Image und zeigen Sie die Laufergebnisse an. lienhua34@test$ sudo docker build -t test:0.0.1 . Senden des Build-Kontexts an den Docker-Daemon 6.144 kB Schritt 1: VON ubuntu:14.04 ---> a5a467fddcb8 Schritt 2: MAINTAINER [email protected] ---> Wird ausgeführt in 57a96522061a ---> c3bbf1bd8068 Zwischenbehälter ausbauen 57a96522061a Schritt 3: ADD startup /opt ---> f9884fbc7607 Zwischenbehälter entfernen 591a82b2f382 Schritt 4: RUN chmod a+x /opt/startup ---> Wird ausgeführt in 7a19f10b5513 ---> 16c03869a764 Zwischenbehälter ausbauen 7a19f10b5513 Schritt 5: ENTRYPOINT /opt/startup arg1 ---> Wird ausgeführt in b581c32b25c3 ---> c6b1365afe03 Zwischenbehälter entfernen b581c32b25c3 Erfolgreich erstellt c6b1365afe03 lienhua34@test$ sudo docker run -ti --rm=true test:0.0.1 beim Start, Argumente: arg1 Erstellen Sie als Nächstes eine neue Dockerfile-Datei. Das Basisimage ist das neu generierte test:0.0.1. Geben Sie mit CMD an, dass Sie die Zeichenfolge „in test:0.0.2“ über echo drucken möchten. Der Dateiinhalt ist wie folgt: VON Test:0.0.1 WARTUNGSPERSÖNLICHKEIT [email protected] CMD ["/bin/bash", "-c", "echo in test:0.0.2"] Führen Sie den Befehl „Docker Build“ aus, um das Image „test:0.0.2“ zu generieren, und führen Sie dann „Docker Run“ aus, um einen Container des Images „test:0.0.2“ zu starten und die Ergebnisse anzuzeigen. lienhua34@test$ sudo docker build -t test:0.0.2 . Senden des Build-Kontexts an den Docker-Daemon 6.144 kB Schritt 1: FROM test:0.0.1 ---> c6b1365afe03 Schritt 2: MAINTAINER [email protected] ---> Läuft in deca95cf4c15 ---> 971b5a819b48 Zwischenbehälter deca95cf4c15 entfernen Schritt 3: CMD /bin/bash -c echo in test:0.0.2 ---> Wird ausgeführt in 4a31c4652e1e ---> 0ca06ba31405 Zwischenbehälter ausbauen 4a31c4652e1e Erfolgreich erstellt 0ca06ba31405 lienhua34@test$ sudo docker run -ti --rm=true test:0.0.2 beim Start, Argumente: arg1 /bin/bash -c echo in test:0.0.2 Aus den obigen Ergebnissen können wir ersehen, dass beim Ausführen des durch das Image test:0.0.2 gestarteten Containers die Zeichenfolge „in test:0.0.2“ nicht gedruckt wird, sondern der durch die CMD-Anweisung angegebene Befehl als Parameter des durch ENTRYPOINT im Basisimage test:0.0.1 angegebenen laufenden Skriptstarts verwendet wird. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Erläuterung der MySQL-Leistungsprüfung durch den Befehl „show processlist“
>>: React implementiert dynamische Popup-Fensterkomponente
Inhaltsverzeichnis Vorwort 1. Allgemeine Fehlerbe...
1. Wenn die Breite der angrenzenden schwebenden Eb...
1. Fall Nehmen Sie alle Mitarbeiter, die nicht Fi...
Inhaltsverzeichnis Überblick console.log konsole....
Einfache Anwendungsbereitstellung 1. Verzeichniss...
Hintergrund go-fastdfs ist ein verteiltes Dateisy...
Wenn es um eine Remotedesktopverbindung zu Linux ...
Bitte öffnen Sie die Testseite in einem gängigen ...
In den letzten Projekten werden viele Formulare e...
Wie kann ich die Bildlaufleisten ausblenden und t...
Inhaltsverzeichnis Vorwort 1.v-show 2.v-wenn 3. D...
Auf alle Orchestrierungsdateien und Konfiguration...
Inhaltsverzeichnis Frage: Wird die Farbe des Bere...
Chinesische Dokumentation: https://router.vuejs.o...
1. Langsame Abfrage aufgrund fehlenden oder ungül...