Mühelos Docker-Volumes unter Windows erstellen

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.

Multiple text files in the C:\data folder

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.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

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.

Listing directory contents in a Docker container

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

Files on the host

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.

Creating a file on the container host

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.

Looking for running containers

Daten in Docker-Volumes auflisten

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

Listing files on the container host

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.

Listing files

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.

Listing Docker volumes

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

Listing running containers

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

Stopping a Docker container

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.

Listing Docker volumes

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.

Creating a new Docker volume

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.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

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.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

Jetzt habe ich zwei Protokolldateien in diesem Verzeichnis.

Two files in C:\logdata

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.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Wenn wir eine Liste des Ordners logdata im neuen Container ausführen, sehen wir die beiden gemeinsam genutzten Protokolldateien.

Two log files being shared with containers

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

Two containers still running

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

Removing Docker containers

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

Volume still available

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

Docker volume syntax

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.

Inspecting Docker volumes

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.

Files created earlier

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.

> docker volume rm logdata

Jetzt, wenn ich die Volumes aufliste, ist logdata nicht mehr vorhanden.

Listing Docker volumes

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.

Inspecting the prune parameter

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.

No Docker volumes exist

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!

Source:
https://adamtheautomator.com/create-docker-volume/