Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Durch die Verwendung von Dockerfile können Benutzer benutzerdefinierte Bilder erstellen.

Grundstruktur

Dockerfile besteht aus Befehlszeilen und unterstützt Kommentarzeilen, die mit # beginnen. Im Allgemeinen ist Dockerfile in vier Teile unterteilt: Basis-Image-Informationen, Betreuerinformationen, Anweisungen zum Image-Betrieb und Anweisungen, die beim Starten des Containers ausgeführt werden.

Zum Beispiel:

// Grundlegende Bildinformationen VON daocloud.io/node:7 
// Informationen zum Betreuer MAINTAINER abel.yang <[email protected]>
LABEL Beschreibung="Dieses Bild wurde für das Web erstellt"
//Spiegelungsvorgangsbefehl RUN mkdir -p /opt/apps/epp
KOPIEREN . /opt/apps/epp
ARBEITSVERZEICHNIS /opt/apps/epp/epp-web/server
ENV LANG C.UTF-8
ENV TZ=Asien/Shanghai
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone
EXPOSE 3001
//Führen Sie den Befehl CMD [ "npm", "start" ] aus, wenn der Container startet

Darunter müssen Sie zuerst den Namen des Bildes angeben, auf dem es basiert. Anschließend wird empfohlen, die Informationen zum Betreuer anzugeben. Darauf folgen Bildoperationsanweisungen, wie beispielsweise die RUN-Anweisung, die die folgenden Befehle auf dem Bild ausführt.

Bei jeder Ausführung einer RUN-Anweisung wird dem Bild eine neue Ebene hinzugefügt und übermittelt. Abschließend gibt es noch den CMD-Befehl, der den Operationsbefehl beim Ausführen des Containers angibt.

Anweisung

INSTRUCTION-Argumente, Anweisungen umfassen FROM, MAINTAINER, RUN usw.

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 und gibt die Betreuerinformationen an.

LAUFEN

Das Format ist RUN 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 eines anderen Terminals ist mit der zweiten Methode möglich, 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.

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 vor

Beispiel: RUN groupadd -r postgres && useradd -r -g postgres postgres . Um vorübergehend Administratorrechte zu erhalten, können Sie gosu verwenden. Dies wird jedoch nicht anstelle von sudo 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.

VON Bild-A

#Führen Sie Folgendes automatisch aus
HINZUFÜGEN ./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 .

Erstellen eines Images

Nachdem Sie die Docker-Datei geschrieben haben, können Sie mit dem Befehl „Docker Build“ ein Image erstellen.

Docker-Build -t Image-Name.
// Hinweis. Nicht vergessen.

Nachfolgend finden Sie zwei Beispiele für Dockerfiles auf Dockerhub.

# Nginx
#
# VERSION 0.0.1
VON Ubuntu
WARTUNGSARBEITER Victor Vieux <[email protected]>
Führen Sie apt-get update und apt-get install -y inotify-tools aus. nginx apache2 openssh-server
# Installieren Sie inotify-tools, nginx, apache2, openssh-server basierend auf dem übergeordneten Image von Ubuntu, um ein neues Nginx-Image zu erstellen.
# Firefox über VNC
#
#VERSION 0.3
VON Ubuntu
# Installieren Sie vnc,xvfb, um eine „gefälschte“ Anzeige und Firefox zu erstellen
Führen Sie apt-get update und apt-get install -y x11vnc Firefox aus.
Führen Sie mkdir /.vnc aus.
# Richten Sie ein Passwort ein
RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
#Firefox automatisch starten
Führen Sie den Befehl bash -c 'echo "firefox" >> /.bashrc' aus.
EXPOSE 5900
CMD ["x11vnc", "-für immer", "-usepw", "-erstellen"]
# Installieren Sie basierend auf dem übergeordneten Ubuntu-Image die Firefox- und VNC-Software. Nach dem Start können Benutzer Firefox über VNC über Port 5900 verwenden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Dockerfiles zum Erstellen eines benutzerdefinierten Docker-Images und Vergleich der CMD- und ENTRYPOINT-Anweisungen
  • Zusammenfassung und ausführliche Erläuterung der Docker-Container-Bedienungsanleitung
  • Detaillierte Erläuterung der spezifischen Verwendung der ENV-Anweisung in Dockerfile
  • Detaillierte Erklärung der Dockerfile-Anweisungen in Docker zum Erstellen von Bildern
  • Einführung in die Dockerfile-Anweisungen ADD und COPY
  • Eine kurze Einführung in die Dockerfile-Anweisung VOLUME
  • Docker-Anweisungen sammeln und anordnen (Sammlung)
  • Dockerfile-Anweisungen erklärt
  • Einige grundlegende Anweisungen für Docker

<<:  Einführung in MySQL-Anweisungskommentare

>>:  js implementiert einen einzigen Klick zum Ändern der Tabelle

Artikel empfehlen

Warum wird in MySQL keine UTF-8-Kodierung verwendet?

MySQL UTF-8-Kodierung MySQL unterstützt UTF-8 sei...

Flammenanimation mit CSS3 umgesetzt

Ergebnisse erzielen Implementierungscode html <...

Diskussion zum Problem der Initialisierung von Iframe-Knoten

Heute fiel mir plötzlich ein, die Produktionsprinz...

Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

Inhaltsverzeichnis 1. Was ist Pinia? 2. Pinia ist...

Importieren von CSS-Dateien unter Verwendung von Beurteilungsbedingungen

Lösung 1: Verwenden Sie bedingten Import im HTML-...

8 Befehle zur effektiven Verwaltung von Prozessen in Linux

Vorwort Die Rolle des Prozessmanagements: Integri...

Zeitzonenprobleme mit im Docker-Container bereitgestelltem Django

Inhaltsverzeichnis Zeitzonenkonfiguration in Djan...

So zeigen Sie in CocosCreator eine Textur an der Wischposition an

Inhaltsverzeichnis 1. Projektanforderungen 2. Dok...

MySQL-Join-Abfrage (Left Join, Right Join, Inner Join)

1. Allgemeine Verbindungen für MySQL INNER JOIN (...

Vue implementiert die Seiten-Caching-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

CentOS7 verwendet RPM, um MySQL 5.7-Tutorialdiagramm zu installieren

1. Laden Sie 4 RPM-Pakete herunter mysql-communit...

Detaillierte Erklärung des EXPLAIN-Befehls und seiner Verwendung in MySQL

1. Szenariobeschreibung: Mein Kollege hat mir gez...

So verwenden Sie Echarts zum Visualisieren von Komponenten in Vue

Offizielle Website-Adresse der Echarts-Komponente...

SQL-Implementierung von LeetCode (184. Das höchste Gehalt der Abteilung)

[LeetCode] 184. Abteilung Höchstes Gehalt Die Mit...