Dockerfile ist eine einfache Textdatei, die alle Befehle enthält, die der Benutzer über die Befehlszeile aufrufen kann, um ein Image zusammenzustellen oder zu erstellen. Mit Hilfe von Docker Build können Sie ganz einfach Builds automatisieren, bei denen mehrere Befehle nacheinander in der Dockerfile-Definition ausgeführt werden.
Sie möchten beispielsweise das Docker-Image für Ihre spezifischen Entwicklungsanforderungen vom Docker-Hub herunterladen. Dann möchten Sie das Image aktualisieren, einige Pakete für Ihren Entwicklungsprozess installieren. In diesem Fall können Sie eine Dockerdatei erstellen, alle Parameter für Ihre spezifischen Anforderungen einschließen und Ihr benutzerdefiniertes Image erstellen. Nachdem Sie ein Dockerfile erstellt haben, können Sie es immer wieder verwenden, um dasselbe Image zu erstellen, ohne alle erforderlichen Pakete für Ihren Entwicklungsprozess manuell zu installieren.
Dockerfile Basic
Bevor Sie mit Dockerfile arbeiten, ist es wichtig zu wissen, wie man ein Dockerfile erstellt. Dockerfile enthält bestimmte Schlüsselwörter, die verwendet werden können, um ein bestimmtes Image zu erstellen. Eine kurze Erläuterung aller Schlüsselwörter, die in einer Dockerdatei verwendet werden, sind unten aufgeführt:
- VON: Es wird verwendet, um das Basisbild zu definieren, auf dem wir aufbauen werden.
- HINZUFÜGEN: Es wird verwendet, um dem zu erstellenden Container Dateien hinzuzufügen. Einfach ausgedrückt wird RUN verwendet, um Befehle auszuführen und das Ergebnis zu übergeben
- LAUF: Es wird verwendet, um dem Basisbild Ebenen hinzuzufügen, indem Komponenten installiert werden.
- CMD: Wird verwendet, um Befehle beim Start des Containers auszuführen. Diese Befehle werden nur ausgeführt, wenn beim Ausführen des Containers kein Argument angegeben wurde.
- EINSTIEGSPUNKT: Wird verwendet, um Befehle während des Container-Initialisierungsprozesses auszuführen. Sie müssen einen ENTRYPOINT in Ihrem Dockefile verwenden, wenn Sie einen Container nach dem Erstellen eines Images automatisch starten möchten.
- ENV: Es wird verwendet, um Umgebungsvariablen in der Container-Laufzeit zu definieren.
- ENTLARVEN: Wird verwendet, um den Überwachungsport anzugeben, um das Netzwerk zur Laufzeit zu aktivieren.
- PFLEGER: Wird verwendet, um den Namen und die E-Mail-ID des Bilderstellers anzugeben specify.
- BENUTZER: Wird verwendet, um den Benutzernamen anzugeben, der zum Ausführen des Containers verwendet wird.
- VOLUMEN: Es wird verwendet, um den Zugriff vom Container auf das Verzeichnis auf dem Docker-Host zu ermöglichen.
- ARBEITSVERZEICHNIS: Wird verwendet, um den Pfad des Befehls anzugeben, der zur Laufzeit ausgeführt werden soll.
- ETIKETTE: Wird verwendet, um dem Docker-Image Labels hinzuzufügen.
Dockerfile erstellen
In diesem Abschnitt erstellen wir eine Dockerdatei, um ein LAMP-Server-Image aus dem Ubuntu-Basisimage zu erstellen.
Zuerst müssen Sie ein Verzeichnis erstellen, um die Dockerdatei zu speichern. Sie können es mit dem folgenden Befehl erstellen:
mkdir LAMPEErstellen Sie als Nächstes ein Verzeichnis namens Dockerfile innerhalb des Verzeichnisses:
nano LAMP/DockerfileFügen Sie die folgenden Zeilen hinzu:
VON Ubuntu: neuestesMAINTAINER Hitesh Jethva
ENV DEBIAN_FRONTEND=nicht interaktiv
RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl","-D","VORGRUND"]
AUSSETZEN 8080
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Image mit Dockerfile erstellen
Nach dem Erstellen des Dockerfiles können Sie mit Hilfe des Dockerfiles ganz einfach ein benutzerdefiniertes LAMP-Image erstellen.
Ändern Sie zunächst das Verzeichnis in LAMP und führen Sie den folgenden Befehl aus, um das Image aus dieser Datei zu erstellen:
CD-LAMPEdocker build -t "lamp:Dockerfile".
Der obige Befehl startet den Download des neuesten Ubuntu-Images vom Docker Hub und installiert die erforderlichen Pakete, die in der Dockerfile angegeben sind. Nachdem das Image erfolgreich erstellt wurde, sollten Sie die folgende Ausgabe sehen:
Build-Kontext an Docker-Daemon 2 senden.048kBSchritt 1/6: VON ubuntu:latest
neuestes: Ziehen aus Bibliothek/Ubuntu
54ee1f796a1e: Ziehen abgeschlossen
f7bfea53ad12: Ziehen abgeschlossen
46d371e02073: Ziehen abgeschlossen
b66c17bbf772: Ziehen abgeschlossen
Zusammenfassung: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Neueres Image für ubuntu:latest . heruntergeladen
---> 4e2eef94cd6b
Schritt 2/6: MAINTAINER Hitesh Jethva
---> Einlaufen in 047977af2c2a
Zwischenbehälter ausbauen 047977af2c2a
---> 1331df625c4c
Schritt 3/6: ENV DEBIAN_FRONTEND=nicht interaktiv
---> Einlaufen in 3597152c7a1b
Zwischenbehälter entfernen 3597152c7a1b
---> 86c82c95e75d
Schritt 4/6: RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Zwischenbehälter entfernen 322532299fd9
---> f6897a9554f7
Schritt 5/6: CMD ["apachectl","-D","FOREGROUND"]
---> Einlaufen in 669635bc8bcb
Zwischenbehälter ausbauen 669635bc8bcb
---> e8400eb2e677
Schritt 6/6: 8080 EXP AUSSETZEN
---> Laufen in 937ae2b2d305
Zwischenbehälter entfernen 937ae2b2d305
---> 2123a857361d
Erfolgreich gebaut 2123a857361d
Erfolgreich getaggt Lampe:Dockerfile
Sie können jetzt Ihr neu erstelltes Image auflisten, indem Sie den folgenden Befehl ausführen:
Docker-BilderSie sollten die folgende Ausgabe sehen:
REPOSITORY-TAG BILD-ID ERSTELLTE GRÖSSELampe Dockerfile 2123a857361d vor 44 Sekunden 520MB
ubuntu neueste 4e2eef94cd6b vor 8 Tagen 73.9 MB
Jetzt haben Sie ein benutzerdefiniertes LAMP-Server-Image in der Hand. Sie können den Verlauf jedes Befehls auch mit dem folgenden Befehl anzeigen:
Docker-History-Lampe: DockerfileSie sollten die folgende Ausgabe sehen:
BILD ERSTELLT ERSTELLT NACH GRÖSSE KOMMENTAR2123a857361d vor 16 Minuten /bin/sh -c #(nop) EXPOSE 8080 0B
e8400eb2e677 vor 16 Minuten /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 Vor 16 Minuten /bin/sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d vor 17 Minuten /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c vor 17 Minuten /bin/sh -c #(nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b vor 8 Tagen /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
Erstellen eines Containers aus einem LAMP-Image
Jetzt können Sie mit dem folgenden Befehl einen Container von Ihrem Image ausführen:
docker run -dit lamp:DockerfileNachdem der Container gestartet wurde, sollten Sie die folgende Ausgabe sehen:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Sie können den laufenden Container mit dem folgenden Befehl überprüfen:
Docker psSie sollten die folgende Ausgabe erhalten:
CONTAINER ID BILDBEFEHL ERSTELLTER STATUS PORT NAMENc14794784eb2 lamp:Dockerfile "apachectl -D FOREGR… " vor 2 Minuten Nach oben 2 Minuten 0.0.0.0:8080->8080/tcp quirky_ramanujan
Fazit
In dieser Anleitung haben Sie gelernt, was Dockerfile ist und wie Sie mit Dockerfile ein Docker-Image erstellen. Dies ist sehr nützlich, um Ihre benutzerdefinierten Bilder zu erstellen, anstatt Änderungen an einem abgerufenen Bild vorzunehmen.