Verwenden von Docker -Volumes zum Austausch von Daten zwischen Containern und Hostcomputer

Verwenden von Docker -Volumes zum Austausch von Daten zwischen Containern und Hostcomputer
Docker -Bände werden verwendet, um Daten aus einem bestimmten Verzeichnis oder Verzeichnissen Ihrer Docker -Container zu bestehen. Daher werden Ihre Daten nicht entfernt, wenn der Container stoppt oder entfernt wird.

Sie können auch viele Container ein Docker -Volumen teilen. Sprechen wir über ein Szenario, um herauszufinden, warum es wichtig ist.

Angenommen, Sie haben eine PHP -Webanwendung. Jetzt möchten Sie testen, ob es auf PHP Version 5 funktioniert.4, 7.0, 7.1 und 7.2. Sie können ein Docker -Volumen erstellen, nennen wir es Web-App. Kopieren Sie dann die Quellcode -Dateien Ihrer PHP -Web -App in das Docker -Volumen Web-App. Anschließend können Sie Container verschiedener PHP -Versionen erstellen und das Docker -Volumen anhängen Web-App Um all diese Behälter zu webrootieren. Auf diese Weise können Sie problemlos testen, wie Ihre Web -App in verschiedenen PHP -Versionen funktioniert.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Docker Volumes verwenden, um Daten zwischen Containern und dem Host -Computer zu teilen. Lass uns anfangen.

Erstellen von Docker -Bänden:

Bevor Sie Ihrem Container ein Docker -Volumen hinzufügen können, müssen Sie ein Docker -Volumen erstellen.

Um ein Docker -Volumen zu erstellen (sagen wir, sagen wir Daten1), führen Sie den folgenden Befehl aus:

$ docker Volumen erstellen Daten11

Daten1 Volumen sollte erstellt werden.

Listing Docker -Bände:

Sie können alle Docker -Bände auflisten, die Sie mit dem folgenden Befehl erstellt haben:

$ docker Volumenliste

Wie Sie sehen können, sind alle Docker -Bände aufgeführt. Im Moment habe ich nur Daten1 Docker -Volumen. Wenn ich mehr erstellen würde, würde es hier auftauchen.

Docker -Bände inspizieren:

Weitere Informationen zu einem bestimmten Docker -Band sehen Sie (sagen wir Daten1) mit dem folgenden Befehl:

$ docker Volumen inspizieren Sie Daten1

Wie Sie sehen können, viele Informationen über die Daten1 Das Volumen ist im JSON -Format aufgeführt. Das Wichtigste ist Einhängepunkt. Einhängepunkt teilt Ihnen den Pfad des lokalen Dateisystems mit, in dem das Volumen montiert ist. Hier das Daten1 Das Volumen ist auf /var/lib/docker/volumes/data1/_data auf meinem lokalen Dateisystem. Ich werde Ihnen zeigen.

Hinzufügen von Bänden zu Behältern und Teilen von Bänden zwischen Behältern:

Jetzt werde ich einen einfachen Docker -Container aus dem erstellen httpd: 2.4 Docker -Bild zum Ausführen von Apache 2 Webserver. Dann werde ich die montieren Daten1 Volumen zu /usr/local/apache2/htdocs Verzeichnis dieses Docker -Containers. Ich werde dem Container auch einen Namen geben (sagen wir, sagen wir www) Um es einfach zu verwalten, um es einfach zu verwalten.

Führen Sie dazu den folgenden Befehl aus:

$ docker run -d -it --Name = www -montal Source = data1, destination =/usr/local/apache2/htdocs
httpd: 2.4

Der Kontainer www sollte erstellt werden.

Nun, um zu überprüfen, ob die Daten1 Das Volumen wurde an die montiert www Container, den folgenden Befehl ausführen:

$ docker inspizieren www

Es ist eine lange Liste von Informationen. Aber auf der Anschlüsse, Sie können sehen, dass der Name des Bandes ist Daten1, es ist montiert zu /usr/local/apache2/htdocs auf der www Container.

Jetzt werde ich mich mit dem verbinden www Container und führen Sie die aus verprügeln Shell dort mit dem folgenden Befehl:

$ docker exec -it www bash

Wie Sie sehen können, läuft Bash Shell.

Erstellen wir nun eine einfache HTML -Datei in der /usr/local/apache2/htdocs Verzeichnis, in dem die Daten1 Das Volumen ist montiert.

$ echo "Hallo Welt">/usr/local/apache2/htdocs/index.html

Verlassen Sie nun aus dem heraus www Docker -Container mit dem folgenden Befehl:

$ Exit

Erfahren Sie nun die IP -Adresse der www Container mit dem folgenden Befehl:

$ docker inspizieren www | Grep -Adresse

Wie Sie sehen können, lautet die IP -Adresse des WWW -Containers 172.17.0.2 (in meinem Fall).

Wenn ich auf die zugreife www Container aus dem Webbrowser können Sie sehen, die Seite, die ich gerade erstellt habe, wird angezeigt.

Jetzt werde ich einen weiteren Container erstellen www2 und fügen Sie die an Daten1 Volumen auf die gleiche Weise und prüfen Sie, ob die Änderungen an der Daten1 Lautstärke (montiert in /usr/local/apache2/htdocs In www Und www2 Behälter) von einem Behälter ist für den anderen Behälter sichtbar.

So erstellen Sie einen neuen Container www2, und fügen Sie die an Daten1 Lösen Sie den folgenden Befehl: Führen Sie den folgenden Befehl aus:

$ docker run -d -it --Name = www2 -montal Source = data1, destination =/usr/local/apache2/htdocs
httpd: 2.4

Lassen Sie uns nun die IP -Adresse der IP -Adresse finden www2 Container mit dem folgenden Befehl:

$ docker inspizieren www2 | Grep -Adresse

Wie Sie sehen können, bekomme ich die gleiche Seite, wenn ich auf die zugreife www2 Container aus einem Webbrowser. Es bedeutet, dass die Daten aus dem www Container blieb angehalten und an die geteilt www2 Container.

Jetzt werde ich Änderungen an der vornehmen Index.html (im Daten1 Volumen in /usr/local/apache2/htdocs) Seite aus dem www2 Container und prüfen, ob sich die Änderung auf beide widerspiegelt www Und www2 Behälter.

Wie Sie sehen können, die Änderungen an einem Container (www2 in diesem Fall) spiegelt sich dem anderen Container wider ((www in diesem Fall).

Zugriff auf Docker -Bände vom Host -Computer:

NOTIZ: Damit dies funktioniert, müssen Sie sich angemeldet werden Wurzel Benutzer.

Sie können den folgenden Befehl ausführen, um den Pfad der zu finden Daten1 Docker -Volumen in Ihrem Host -Computer:

# Docker Volume Inspect Data1

Wie Sie sehen können, die Daten1 Volumen ist in der /var/lib/docker/volumes/data1/_data Verzeichnis meines Host -Computers.

Navigieren Sie jetzt zur /var/lib/docker/volumes/data1/_data Verzeichnis mit dem folgenden Befehl:

# cd/var/lib/docker/volumes/data1/_data

Wie Sie sehen können, die Index.html Datei, die wir gerade erstellt haben, ist da.

# ls

Auch der Inhalt der Index.html Datei ist die gleiche.

Lassen Sie uns nun die bearbeiten Index.html Datei und prüfen Sie, ob sich die Änderungen in der widerspiegeln www Und www2 Behälter.

# Nano -Index.html

Ich habe den Inhalt des Index.html Datei dazu:

Wie Sie sehen können, spiegeln sich die Änderungen der www und das www2 Behälter.

Entfernen von Docker -Bänden:

Wenn Sie möchten, können Sie auch ein Docker -Volumen löschen. Um einen Docker -Volumen zu löschen, sagen wir, sagen wir Daten2, Führen Sie den folgenden Befehl aus:

$ Docker Volumen RM Data2

Das Docker -Volumen Daten2 sollte dauerhaft gelöscht werden.

So teilen Sie Docker -Volumes zwischen Containern und dem Host -Computer. Danke, dass du diesen Artikel gelesen hast.