Dockerfile Volumes

Dockerfile Volumes
Wenn Sie einen Docker -Container ausführen, wird keiner der Daten in diesem Container gespeichert. Was ich meine ist, sagen wir, Sie haben einen Docker -Container gestartet. Dann haben Sie einige Dateien und Ordner in einem Verzeichnis erstellt (sagen wir sagen /Daten) Dort. Wenn Sie den Container stoppen, alle Dateien und Ordner in der /Daten Verzeichnis wird entfernt. Wenn Sie den Container erneut starten, müssen Sie alle Dateien und Ordner neu erstellen, wenn Sie ihn erneut benötigen. Keine der Daten bleibt bestehen.

Sie können Docker -Volumes verwenden, um Änderungen eines bestimmten Verzeichnisses Ihrer Docker -Container zu speichern. In einfachen Worten können Sie Daten Ihrer Docker -Container mithilfe von Docker -Volumes bestehen bleiben.

Sie können Docker mitteilen, welches Verzeichnis Ihres Docker -Containers Änderungen in Ihrem bestehen bleiben sollen Dockerfile Wenn Sie benutzerdefinierte Docker -Bilder mithilfe erstellen Dockerfile.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Docker -Bände in verwenden können Dockerfile und wie man diese Bände verwaltet. Lass uns anfangen.

Verwenden von Bänden in Dockerfile:

In diesem Abschnitt erstelle ich ein benutzerdefiniertes Docker -Bild des Apache 2 -Servers aus dem Docker -Bild httpd: 2.4 und verwenden Sie Docker -Bände, um die Apache -Webroot -Daten zu bestehen.

Erstellen Sie zunächst ein neues Verzeichnis (sagen wir, sagen wir www3) für Ihr benutzerdefiniertes Docker -Bild (sagen wir sagen www: v1) und navigieren Sie dazu:

$ mkdir www3 && cd www3

Erstellen Sie nun a Dockerfile mit dem folgenden Befehl:

$ touch dockerfile

Jetzt bearbeiten Dockerfile Datei mit Nano oder Vim Texteditor.

Nano:

$ nano dockerfile

Vim:

$ vim dockerfile

Fügen Sie nun die folgenden Zeilen hinzu und speichern Sie die Datei:

Hier, Von httpd: 2.4 Mittel, das Grundbild dieses benutzerdefinierten Docker -Bildes ist httpd: 2.4

Workdir/usr/local/apache2/htdocs bedeutet, wenn Sie in die Shell (Befehlszeilenschnittstelle) von Containern aus diesem benutzerdefinierten Bild eingehen, sind Sie in der /usr/local/apache2/htdocs Verzeichnis des Containers standardmäßig.

VOLUMEN /usr/local/apache2/htdocs Erstellen Sie ein neues Volumen für jeden der Container, der aus diesem benutzerdefinierten Bild erstellt wurde, und bestehen Sie alle Dateien in der /usr/local/apache2/htdocs Verzeichnis dieses Containers zu diesem neuen Band.

Jetzt, wo du deine hast Dockerfile Bereit, es ist Zeit, unser benutzerdefiniertes Docker -Bild zu erstellen (ich werde es nennen www: v1).

So erstellen Sie Ihr benutzerdefiniertes Docker -Bild www: v1 Verwendung der Dockerfile, Führen Sie den folgenden Befehl aus:

$ docker Build -t www: v1

Das benutzerdefinierte Docker -Bild www: v1 wird erfolgreich erstellt.

Listen Sie lokal verfügbare Docker -Bilder auf:

Sie können alle lokal verfügbaren Docker -Bilder mit dem folgenden Befehl auflisten:

$ docker Bildliste

Wie Sie sehen können, die www: v1 Das Bild hat ungefähr 178 MB und es wurde vor ungefähr einer Minute erstellt.

Arbeiten mit Docker -Bänden und -Containern:

Wir haben ein volumen -fähiges Docker -Bild erstellt www: v1 Im früheren Abschnitt dieses Artikels oben.

Um einen Docker -Container zu erstellen (sagen wir, sagen wir App1) aus dem benutzerdefinierten Docker -Bild www: v1, Führen Sie den folgenden Befehl aus:

$ docker run -d -it --Name = app1 www: v1

Der Docker -Container App1 sollte erstellt werden.

Führen Sie nun den folgenden Befehl aus, um die Hülle des App1 Container:

$ docker exec -it app1 /bin /bash

Wie Sie sehen können, bin ich in der /usr/local/apache2/htdocs Verzeichnis standardmäßig.

Lassen Sie uns a erstellen Index.html Datei hier mit dem folgenden Befehl:

$ echo "

Hallo Welt (App1)

"> Index.html

Verlassen Sie nun aus dem heraus App1 Container.

$ Exit

Führen Sie nun den folgenden Befehl aus, um die IP -Adresse des App1 Container:

$ docker inspect app1 | Grep -Adresse

Wie Sie sehen können, ist die IP -Adresse 172.17.0.2

Wenn Sie jetzt in einem Webbrowser die Seite um 172 besuchen, besuchen Sie die Seite.17.0.2, Sie sollten die sehen Index.html Seite, die Sie gerade erstellt haben.

Lassen Sie uns nun testen, ob Persistenz funktioniert oder nicht.

Zuerst stoppen App1 Container mit dem folgenden Befehl:

$ docker Container Stopp App1

Starten Sie dann den Container erneut mit dem folgenden Befehl:

$ Docker Container Start App1

Finden Sie nun die IP -Adresse des Containers erneut:

$ docker inspectApp1 | Grep -Adresse

Wie Sie sehen können, die Index.html Die Seite ist unverändert, wenn ich von meinem Webbrowser darauf zugreife. Es bedeutet, dass das Docker -Volumen Daten aus dem anhält App1 Container.

Verwaltung von Docker -Bänden:

Sie können alle Docker -Volumes auf dem Computer mit dem folgenden Befehl auflisten:

$ docker Volumenliste

Wie Sie sehen können, habe ich 2 Docker -Bände auf meinem Computer. Die lange hexadezimale Zeichenfolge, wie im folgenden Screenshot markiert, ist das automatische Volumen für die App1 Container.

Wenn Sie einen Container aus einem Docker -Bild erstellen, das Volumes verwendet, wird für jeden von Ihnen erstellten Container ein neues Volumen erstellt.

Zum Beispiel habe ich einen weiteren Container erstellt App2 von dem www: v1 Bild, das ich aus dem erstellt habe Dockerfile Das verwendet Volumen.

Wie Sie sehen können, wird ein neues Volumen generiert.

Beide Bände enthalten unterschiedliche Daten. Die Daten bleiben nur für einen Container bestehen, für den sie generiert wurden. Zum Beispiel das für das erzeugte Volumen App1 Der Container bleibt nur Daten für die App1 Container. Das gleiche gilt für die App2 Container. Das für die erzeugte Volumen App1 Container speichert keine Daten von der App2 Container.

Sie können Volumes entfernen, wenn Sie es nicht mehr brauchen. Damit dies funktioniert, müssen Sie anhalten und den Behälter entfernen, an das das Volumen angeschlossen ist. Wenn Sie versuchen, ein Volumen zu entfernen, das an einen Container angeschlossen ist, erhalten Sie die folgende Fehlermeldung.

Nehmen wir an, Sie möchten die Lautstärke für löschen App2 Container, führen Sie zuerst die folgenden Befehle aus, um den Container anzuhalten und zu entfernen:

$ Docker Container Stopp App2
$ Docker Container RM App2<

Entfernen Sie nun das Volumen, an das angehängt wurde App2 Container mit dem folgenden Befehl:

$ Docker Volume RM 962B2D970BCD96DE860B348130A84AA86C0AAA55378B3DCE35225659679FF808

Das Volumen sollte entfernt werden.

Hinzufügen von Dateien zu Volumes mit DockerFile:

Du kannst den ... benutzen KOPIEREN Befehl in Ihrem Dockerfile Kopieren Sie Dateien von Ihrem Host -Computer auf Ihr Docker -Volumes. Auf diese Weise wird jeder Container, den Sie aus Ihrem benutzerdefinierten Docker -Bild erstellen, diese Dateien standardmäßig enthält. Sie können mehr darüber nachsehen KOPIEREN im Dockerfile Dokumentation.

So arbeiten Sie also mit Docker -Bänden mit Verwendung Dockerfile. Danke, dass du diesen Artikel gelesen hast.