Docker-Volumes sind die bevorzugte Methode zur Handhabung von persistenten Daten, die von Docker-Containern erstellt und verwendet werden. Werfen wir einen Blick darauf, wie dies funktioniert, indem wir behandeln, wie man Docker-Volumes unter Windows erstellt. Sie lernen auch, wie man diese verwaltet!
Dieser Blog-Post hat ein begleitendes Video, das von TechSnips-Mitarbeiter Matt McElreath erstellt wurde. Sie können es sich gerne ansehen oder, wenn Sie Text bevorzugen, weiterlesen!
Persistente Daten speichern
Wenn Sie persistente Daten für Container speichern möchten, gibt es ein paar Optionen. Zunächst zeige ich Ihnen, wie Sie einen Bind-Mount verwenden. Ich befinde mich derzeit in einem Ordner namens data auf meinem C:\. Wenn ich den Inhalt dieses Ordners aufliste, sehen Sie, dass ich fünf Textdateien habe.

Wenn ich diesen Ordner einem Container zur Verfügung stellen möchte, kann ich ihn beim Starten des Containers mounten.
Lassen Sie uns einen Container mit docker run
starten. Ich werde diesen Container im interaktiven Modus ausführen und dann -V
angeben. Hier gebe ich den Pfad zu meinem Datenordner ein, gefolgt von einem Doppelpunkt, dann gebe ich den Pfad im Container an, wo ich diesen Ordner mounten möchte.
Für dies werde ich den Ordner C:\shareddata angeben. Dann werde ich das Windows-Serverkern-Image spezifizieren und schließlich werde ich angeben, dass ich PowerShell ausführen möchte, sobald ich mich im Container befinde.
Jetzt, da ich im neuen Container bin, wenn ich den Inhalt von C:\ aufliste, können Sie sehen, dass ich einen Ordner namens shareddata habe.

Lassen Sie uns in diesen Ordner gehen und den Inhalt auflisten. Hier sind meine fünf Testdateien, die sich auf meinem Container-Host befinden.

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Wir können oben sehen, dass die neue Datei von innerhalb des Containers erstellt wurde. Jetzt werde ich diesen Container verlassen, was ihn durch Ausführen von exit
herunterfahren wird.
Wenn ich docker ps
ausführe, können Sie sehen, dass derzeit keine laufenden Container vorhanden sind.

Daten in Docker-Volumes auflisten
Jetzt lassen Sie uns erneut den Inhalt des Datenordners von meinem Container-Host auflisten.

Wir können die neue Datei sehen, die von innerhalb des Containers erstellt wurde und containertest heißt. Bind-Mounts haben jedoch einige eingeschränkte Funktionalitäten, daher sind Volumes der bevorzugte Weg, um das zu erreichen, was wir versuchen. Um mit Volumes zu beginnen, können wir denselben Befehl ausführen, um einen Container zu starten, jedoch mit ein paar kleinen Unterschieden. Dort, wo wir das Volume angegeben haben, werde ich anstelle des Pfads auf dem Dateisystem des Container-Hosts das Wort hostdata verwenden, als Namen eines Volumes, das ich erstellen und verwenden möchte.
Von innerhalb des neuen Containers, wenn ich den Inhalt von C:\ aufliste, können Sie erneut sehen, dass ich einen Ordner namens shareddata habe.

Wenn ich den Inhalt dieses Ordners aufliste, ist er derzeit leer, weil wir ein leeres Volume erstellt haben. Jetzt führen wir Strg-P-Q aus, um aus dem laufenden Container herauszukommen, ihn aber im Hintergrund laufen zu lassen.
Vom Container-Host aus führen Sie docker volume ls
aus. Dies listet die aktuellen Volumes auf diesem Container-Host auf. Ich habe ein Volume namens hostdata, das erstellt wurde, als ich es im docker run
-Befehl angegeben habe.

Wenn ich docker ps
ausführe, können wir unseren laufenden Container sehen.

Stoppen Sie diesen Container mit docker stop
. Jetzt haben wir keine laufenden Container mehr.

Entfernen Sie die gestoppten Container, indem Sie docker rm
ausführen. Wenn ich die Volumes erneut aufliste, sehen Sie, dass das hostdata-Volume weiterhin verfügbar ist und in neue Container eingebunden werden kann.

Erstellen von Docker-Volumes
Eine weitere Möglichkeit, ein Volume zu erstellen, besteht darin, den Befehl docker volume create
zu verwenden. Wenn Sie keinen Namen angeben, wird docker ihm einen Namen geben, der aus einer langen Liste von zufälligen Zeichen besteht. Andernfalls können Sie hier einen Namen angeben. Ich werde dieses Volume logdata nennen. Jetzt können wir sehen, dass es in der Liste steht, wenn wir die Volumes erneut auflisten.

Sie werden dies jetzt an einen neuen Container anhängen. Verwenden Sie erneut docker run
und geben Sie für das Volume das gerade erstellte Volume an und hängen Sie es an c:\logdata an.
Von innerhalb des Containers gehen Sie in den Ordner logdata und erstellen ein paar Dateien. Im Moment befinden sich keine Dateien in diesem Verzeichnis, also legen Sie bitte einige an.
Jetzt habe ich zwei Protokolldateien in diesem Verzeichnis.

Führen Sie erneut Strg-P-Q aus, um diesen Container zu verlassen, während er noch läuft. Während dieser Container läuft, starten Sie einen neuen Container mit demselben eingebundenen Volume.
Wenn wir eine Liste des Ordners logdata im neuen Container ausführen, sehen wir die beiden gemeinsam genutzten Protokolldateien.

Verlassen Sie nun diesen Container. Sie sollten immer noch einen laufenden Container und zwei beendete Container haben.

Beenden Sie nun alle laufenden Container, führen Sie dann docker rm
aus, um alle beendeten Container zu entfernen.

Listen Sie die Volumes erneut auf. Das Volume logdata steht weiterhin zur Einbindung in zukünftige Container zur Verfügung.

Wenn Sie docker volume
ausführen, erhalten Sie einige Hilfetexte für den Befehl.

Untersuchen von Docker-Volumes
Wir haben bereits create
betrachtet, also gehen wir zum Befehl inspect
über. Wenn ich docker volume inspect
gegen das Volume logdata ausführe, werden die Eigenschaften für dieses Volume zurückgegeben, einschließlich des Einhängepunkts, der der physische Pfad zum Volume auf dem Container-Host ist.

Lassen Sie uns diesen Ordner mit Invoke-Item
öffnen und uns umsehen. Unter dem Ordner logdata gibt es einen Ordner namens data. Wenn wir diesen öffnen, können wir die Dateien sehen, die zuvor aus dem Container erstellt wurden.

Löschen von Docker-Volumes
Um ein Volume zu löschen, können wir docker volume rm
ausführen, gefolgt vom Namen des zu löschenden Volumes.
Jetzt, wenn ich die Volumes aufliste, ist logdata nicht mehr vorhanden.

Abschließend können wir prune
verwenden, um alle ungenutzten lokalen Volumes zu entfernen. Dadurch werden alle Volumes gelöscht, die nicht mit einem laufenden oder gestoppten Container verbunden sind.

Bei diesem Befehl sollten Sie vorsichtig sein. Es gibt eine Warnung und eine Aufforderung, um sicherzustellen, dass Sie wirklich möchten, dass dies durchgeführt wird. Wenn ich Y
eingebe und Enter drücke, zeigt es mir die gelöschten Volumes an.
Und wenn ich meine Volumes erneut aufliste, können Sie sehen, dass sie alle gelöscht wurden.

Zusammenfassung
In diesem Blog-Beitrag sollten Sie einen guten Überblick über das Verwalten von Docker-Volumes unter Windows erhalten haben. Docker ist eine großartige Container-Plattform. Mit seiner Unterstützung für Windows und Ihren neu erworbenen Fähigkeiten zum Verwalten von Docker-Volumes werden Sie unaufhaltbar sein!