Speichern und Teilen mit Docker Volumes

Speichern und Teilen mit Docker Volumes
In Docker können Sie Daten auf die beschreibbare Ebene schreiben. Die Daten bleiben jedoch nicht bestehen, nachdem ein Container abgeschaltet wird. Außerdem ist es nicht einfach, die Daten von einem Container in einen anderen zu verschieben. Natürlich ist das Speichern und Teilen von Daten zwischen den Diensten erforderlich.

Docker verfügt über drei Arten von Datenmontage, die helfen können - Volumina, Binden von Halterungen und TMPFs. Volumes speichern Daten im Dateisystem des Hosts, wird jedoch von Docker verwaltet. Binding Mounts helfen, Daten überall im Hostsystem zu speichern, und Benutzer können die Dateien direkt aus den eigenen Prozessen des Hosts ändern. Die TMPFS -Halterungen werden nur im Speicher des Hosts gespeichert. Docker -Volumina sind die beste Option, da sie am sichersten sind, um die Verwendung zu verwenden.

So verwenden Sie Docker -Bände

Probieren wir ein praktisches Beispiel aus. Wir werden ein paar Ubuntu -Container erstellen, die das gleiche Volumen teilen.

Zunächst möchten wir den Band mit dem folgenden Befehl erstellen:

$ docker Volumen erstellen My-Common-Vol

Jetzt können wir überprüfen, ob das Volumen vorhanden ist:

$ Docker Volume LS
Treiberbandname
Lokale My-Common-Vol

Wir können das Volumen weiter untersuchen, um seine Eigenschaften zu überprüfen:

$ docker Volumen inspizieren Sie My-Common-Vol
[

"Createdat": "2018-04-06T07: 43: 02Z",
"Fahrer": "Lokal",
"Labels": ,
"Mountpoint": "/var/lib/docker/volumes/my-common-vol/_data",
"Name": "My-Common-Vol",
"Optionen": ,
"Scope": "Lokal"

]

Es ist wichtig zu beachten. Es ist also nicht direkt zugänglich.

Beginnen wir jetzt unseren ersten Server mit My-Common-Vol.

(Hinweis für den Befehl Docker Run, können Sie die Optionen -Mount und -v verwenden, um ein Volumen zu montieren. Die Syntax der beiden ist anders. Wir werden die neueste Option -Mount -Option verwenden, da es die neueste ist.)

$ docker run-name server1-montal source = my-common-vol, target =/app -it ubuntu

Wir montieren My-Common-Vol an /App-Ordner im Server1 Docker Container. Der obige Befehl sollte Sie bei Ubuntu Server1 anmelden. Gehen Sie aus der Befehlszeile zum Ordner /App und erstellen Sie eine Datei:

root@1312ea074055: /# cd /App
root@1312ea074055:/App# ls
root@1312ea074055:/App# touch-on-server1.txt
root@1312ea074055:/App# ls
erstellt auf server1.txt

Deshalb haben wir die Datei auf Server1 erstellt.txt im /App -Ordner.

Lassen Sie uns einen zweiten Server erstellen und das gleiche My-Common-VOL-Volumen darauf montieren:

$ docker run-name server2-montal source = my-common-vol, target =/src -it ubuntu

Jetzt können wir zum /src -Ordner in Server2 gehen, nach Server1 -Dateien überprüfen und eine neue Datei erstellen:

root@77cd51945461: /# cd /src
root@77cd51945461:/src# ls
erstellt auf server1.txt
root@77cd51945461:/src# touch-on-server2.txt
root@77cd51945461:/src# ls -1
erstellt auf server1.txt
erstellt auf server2.txt

Im Ordner /src sehen wir das erstellte auf server1.TXT existiert bereits. Wir fügen auf Server2 erstellt.txt. Wir können den Server1 erneut überprüfen und sehen, dass er für Server2 erstellt wurde.txt zeigt sich.

Starten wir einen neuen Containerserver3, auf dem nur schreibgeschützte Zugriff auf die Lautstärke My-Common-VOL besteht:

$ docker run-name server3-montal source = my-common-vol, target =/test, readonly -it Ubuntu

Deshalb haben wir Server3 mit My-Common-Vol erstellt, die an /test montiert sind.

Versuchen wir, etwas in /Test zu schreiben:

root@a6620da1eea1:/# CD -Test
root@a6620da1eea1:/test# ls -1
erstellt auf server1.txt
erstellt auf server2.txt
root@a6620da1eea1:/test# touch erstellt auf server3.txt
Touch: Kann nicht berühren 'erstellt auf server3.txt ': schreibgeschütztes Dateisystem

Sie können sehen, dass wir von Server3 nicht an my-common-vol schreiben können.

Sie können Bände löschen. Sie müssen jedoch alle zugehörigen Behälter entfernen, bevor Sie versuchen können. Andernfalls erhalten Sie einen solchen Fehler:

$ Docker Volume RM My-Common-Vol
Fehlerantwort von Daemon: Lautstärke kann nicht entfernen: My-Common-Vol entfernen:
Das Volumen wird verwendet - [1312EA07405528BC65736F56692C06F04280779FD283A81F59F8477F28AE35BA,
77CD51945461FA03F572EA6830A98A16ECE47B4F840C2EDFC2955C7C9A6D69D2,
A6620DA1EEA1A39D64F3ACDF82B6D70309EE2F8D1F2C6B5D9C98252D5792EA59]

In unserem Fall können wir die Behälter und das Volumen wie folgt entfernen:

$ Docker Container RM Server1
$ Docker Container RM Server2
$ Docker Container RM Server3
$ Docker Volume RM My-Common-Vol

Wenn Sie mehrere Bände montieren möchten.

Weiteres Studium:

  • https: // docs.Docker.com/speicher/
  • https: // docs.Docker.com/lager/volumes/
  • https: // docs.Docker.com/speichern/bindende montage/
  • https: // docs.Docker.com/storate/tmpfs/
  • https: // www.Digitalocean.Com/Community/Tutorials/How-to-Share-Data-Between-Docker-Container