Erstellen Sie ein Docker-Image mit Dockerfile

Erstellen Sie ein Docker-Image mit Dockerfile

Heute schauen wir uns an, wie man eine Docker-Datei erstellt.

Es gibt zwei Möglichkeiten, ein Docker-Image zu erstellen:

1. Eine Möglichkeit besteht darin, den Befehl „Docker Commit“ zu verwenden

2. Ein anderer basiert auf dem Docker-Build-Befehl und der Dockerfile-Datei

Im Allgemeinen ist das Erstellen eines Images mit Dockerfile flexibler als das Erstellen eines Images mit dem Docker-Commit-Befehl, daher wird letzterer häufiger verwendet.

Erstellen Sie ein Docker-Image mit Dockerfile

1. Was ist Dockerfile?

Ein Dockerfile ist eine Datei, die mit DSL-Syntax geschrieben wird. Anschließend wird mit dem Befehl „Docker Build“ ein neues Image basierend auf den Anweisungen in der Dockerfile-Datei erstellt.

Angenommen, unser Code lautet:

mkdir-Test

CD-Test

Docker-Datei berühren

Es ist nicht schwer zu erkennen, dass wir ein Testverzeichnis erstellt und das Verzeichnis aufgerufen haben, um eine Dockerfile_test-Datei zu erstellen. Dieses Verzeichnis wird als unsere Build-Umgebung bezeichnet. Docker nennt diese Umgebung Kontext oder Build-Kontext. Docker lädt den Build-Kontext und die Dateien und Verzeichnisse im Kontext beim Erstellen des Images in den Docker-Daemon hoch, sodass der Docker-Daemon direkt auf jeden Code, alle Dateien oder andere Daten zugreifen kann, die Sie im Image speichern.

Werfen wir einen Blick auf den Inhalt einer Docker-Datei:

# Version: 0.0.1
VON Ubuntu:14.04
WARTUNGSBEARBEITER Yeyz '[email protected]'
Führen Sie apt-get update aus.
Führen Sie apt-get install -y nginx aus.
RUN echo 'Hallo, ich bin Ihr Container' > /root/test.html
AUSSETZEN 80

Aus dem obigen Dateiinhalt lässt sich leicht erkennen, dass das Dockerfile eine Reihe von Befehlen enthält. Jeder Befehl muss mit einem Schlüsselwort in Großbuchstaben gekennzeichnet werden. Inhalte, die mit # beginnen, werden als Kommentar erkannt.

Docker führt die Befehle im Dockerfile im Allgemeinen in der folgenden Reihenfolge aus:

1. Docker führt einen Container von einem Basisimage aus. Der erste Befehl jeder Docker-Datei sollte From sein. From gibt ein Basisimage an und nachfolgende Anweisungen werden auf dieser Basis ausgeführt.

2. Führen Sie eine Anweisung zum Ändern des Containers aus

3. Führen Sie ähnliche Vorgänge wie Docker Commit aus, um eine neue Image-Ebene zu übermitteln

4. Das Docker-Image führt einen Container basierend auf dem gerade übermittelten Image aus

5. Führen Sie die nächste Anweisung im Dockerfile aus, bis alle Containeranweisungen ausgeführt sind

Wenn im obigen Prozess die Ausführung eines Schritts fehlschlägt, bedeutet dies, dass das Zielabbild nicht erstellt werden kann. Da das Zielabbild jedoch das Ergebnis der Stapelung eines Abbilds nach dem anderen ist, erhalten wir tatsächlich ein Abbild, das ausgeführt werden kann, aber noch nicht das endgültige Abbild erreicht hat. Diese Funktion ist für das Debuggen von Abbildern sehr wichtig.

Wir erklären das obige Bild:

Version: stellt einen Kommentar dar, der die Version angibt

From-Anweisung, From gibt ein Basisimage Ubuntu an, was bedeutet, dass unsere Operation auf dem Basisimage Ubuntu ausgeführt wird

Maintainer-Direktive, die den Autor des Bildes und die E-Mail-Adresse des Autors angibt

Die RUN-Anweisung führt den angegebenen Befehl im aktuellen Image aus. Die drei Anweisungen dienen dazu, das Apt-Repository zu aktualisieren, das Nginx-Paket zu installieren und einen Befehl in die angegebene Datei zu drucken. Jeder Befehl erstellt eine Bildebene. Wenn der Befehl erfolgreich ist, wird die Image-Ebene festgeschrieben und anschließend die nächste Anweisung im DockerFile angegeben. Standardmäßig verwendet der Befehl RUN /bin/bash -c in der Shell, um die folgenden Anweisungen auszuführen.

Die Expose-Anweisung weist die Anwendung im Container an, den angegebenen Port des Containers zu verwenden. Natürlich können Sie mehrere EXPOSE verwenden, um mehrere Ports der Außenwelt zugänglich zu machen.

2. Führen Sie eine Docker-Datei aus, um ein Image zu erstellen

Wir führen das Dockerfile jetzt einfach aus und erhalten folgendes Ergebnis:

[Root-Test]# Docker Build -t='yeyz:test0'.
Senden des Build-Kontexts an den Docker-Daemon 2.048 kB
Schritt 1/6: VON Ubuntu:14.04
Es wird versucht, das Repository docker.io/library/ubuntu abzurufen ...
 14.04: Abrufen von docker.io/library/ubuntu
2e6e20c8e2e6: Herunterladen [> ] 539,1 kB/70,69 MB
95201152d9ff: Download abgeschlossen
 5f63a3b65493: Download abgeschlossen

Mit der Option -t werden der Image- und der Warehouse-Name angegeben, wobei „yeyz“ der Warehouse-Name und „test0“ der Image-Name ist. Der . im Befehl stellt das aktuelle Verzeichnis dar. Docker sucht standardmäßig im lokalen Verzeichnis nach DockerFile. Es kann auch durch eine angegebene Quelladresse eines Git-Repositorys ersetzt werden, um den Speicherort von DockerFile anzugeben. wie folgt:

docker build -t='yeyz/test0' xxxx.com:yeyz/test0

Wenn Sie Versionsinformationen behalten möchten, können Sie wie folgt ein Tag angeben:

docker build -t='yeyz/test0:v1' .

Wenn wir nur einige Dateien in einem bestimmten Verzeichnis hochladen möchten, können wir eine .dockerignore-Datei erstellen, in der jede Zeile ein Dateifilter ist, der dem Muster entspricht. Auf diese Weise werden beim Generieren des Images unnötige Dateien automatisch herausgefiltert.

Der endgültige Rückgabewert ist eine Image-ID. Nachdem wir die Image-ID erhalten haben, können wir das Image mit dem Befehl „Docker Run“ ausführen.

3. Dockerfile-Build-Cache

Wenn beim ersten Erstellen der Docker-Datei ein Problem auftritt, müssen wir sie erneut erstellen. Diesmal werden dieselben Anweisungen ausgeführt. Angenommen, wir ändern den Inhalt von Zeile 4 in der Docker-Datei. Dann lädt Docker die ersten drei Zeilen automatisch durch Zwischenspeichern, was viel Zeit spart.

Wenn wir den Dockerfile-Cache nicht verwenden möchten, können wir die Verwendung des Dockerfile-Cache vermeiden, indem wir den Parameter --no-cache hinzufügen.

4. Anzeigen des Image-Build-Verlaufs

Der Docker-Verlauf kann den Build-Verlauf des erstellten Images und jede Ebene des erstellten Images anzeigen.

[root@VM-16-13-centos test]# Docker-Images MySQL
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
docker.io/mysql latest 4f1413420360 vor 7 Wochen 545 MB

[root@VM-16-13-centos test]# Docker-Verlauf 4f1413420360
BILD ERSTELLT ERSTELLT VON GRÖSSE KOMMENTAR
4f1413420360 vor 7 Wochen /bin/sh -c #(nop) CMD ["mysqld"] 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c #(nop) EXPOSE 3306 33060 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c #(nop) ENTRYPOINT ["docker-ent... 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c ln -s usr/local/bin/docker-entr... 34 B
                <fehlt> vor 7 Wochen /bin/sh -c #(nop) COPY file:f9202f6b715c0e... 13,1 kB
             <fehlt> vor 7 Wochen /bin/sh -c #(nop) COPY dir:2e040acc386ebd2... 1,12 kB
             <fehlt> vor 7 Wochen /bin/sh -c #(nop) VOLUME [/var/lib/mysql] 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c { echo mysql-community-server... 410 MB
              <fehlt> vor 7 Wochen /bin/sh -c echo "deb http://repo.mysql.com... 55 B
                <fehlt> vor 7 Wochen /bin/sh -c #(nop) ENV MYSQL_VERSION=8.0.2... 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c #(nop) ENV MYSQL_MAJOR=8.0 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c set -ex; key='A4A9406876FCBD3C... 2,61 kB
             <fehlt> vor 7 Wochen /bin/sh -c apt-get update && apt-get insta... 52,2 MB
             <fehlt> vor 7 Wochen /bin/sh -c mkdir /docker-entrypoint-initdb.d 0 B
                 <missing> vor 7 Wochen /bin/sh -c set -eux; savedAptMark="$(apt-... 4,17 MB
             <fehlt> vor 7 Wochen /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c apt-get update && apt-get insta... 9,34 MB
             <fehlt> vor 7 Wochen /bin/sh -c groupadd -r mysql && useradd -r... 329 kB
              <fehlt> vor 7 Wochen /bin/sh -c #(nop) CMD ["bash"] 0 B
                 <fehlt> vor 7 Wochen /bin/sh -c #(nop) ADD file:d2abb0e4e7ac177... 69,2 MB

Oben finden Sie Einzelheiten zur Verwendung von Dockerfile zum Erstellen von Docker-Images. Weitere Informationen zur Verwendung von Dockerfile zum Erstellen von Docker-Images finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Befehlsanalyse zum Schreiben von Dockerfile-Dateien und Erstellen von Images
  • Implementierung zum Erstellen benutzerdefinierter Images mit Dockerfile
  • Schritte zum Erstellen eines Docker-Images mit Dockerfile
  • So erstellen Sie ein Tomcat-Image basierend auf Dockerfile
  • So verwenden Sie Dockerfile zum Erstellen von Images in Docker
  • Beispiel für die Verwendung von Dockerfile zum Erstellen eines Nginx-Images
  • So verwenden Sie Dockerfile zum Erstellen von Images
  • Beispielcode zum Erstellen eines Docker-Images mit der Dockerfile-Anweisung

<<:  Verwenden Sie personalisierte Suchmaschinen, um die personalisierten Informationen zu finden, die Sie benötigen

>>:  So erreichen Sie eine nahtlose Token-Aktualisierung

Artikel empfehlen

So legen Sie die Speichergröße von Docker Tomcat fest

Wenn Sie Tomcat in Docker installieren, kann es b...

So schreiben Sie HTML-Header in der Webentwicklung für mobile Geräte

Code kopieren Der Code lautet wie folgt: <Kopf...

Element-Beispielcode zum Implementieren dynamischer Tabellen

Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...

Detaillierte Erläuterung zur Verwendung der WeChat-Miniprogrammkarte

In diesem Artikelbeispiel wird der spezifische Im...

Detaillierte Erläuterung der Live-Übertragungsfunktion von Vue

Vor kurzem hat das Unternehmen zufällig Live-Über...

Praktische Hinweise zur Installation von Jenkins mit Docker-Compose

Erstellen Sie ein Verzeichnis cd /usr/local/docke...

Analyse des Benchmarking-Prozesses von Sysbench für MySQL

Vorwort 1. Benchmarking ist eine Art Leistungstes...

Detaillierter Installationsprozess und Konfiguration von mysql5.7.19 zip

Offizielle Version von MySQL v5.7.19 (32/64-Bit-I...

Einführung in die Generierung von Kubernetes-Zertifikaten mit OpenSSL

Kubernetes unterstützt drei Arten der Authentifiz...

Detaillierte Schritte zur Neuinstallation von VMware Tools (grafisches Tutorial)

VMware Tools ist ein Tool, das mit virtuellen VMw...

MySQL berechnet die Anzahl der Tage, Monate und Jahre zwischen zwei Daten

Die in MySQL integrierte Datumsfunktion TIMESTAMP...