Maak eenvoudig Docker-volumes op Windows

Docker-volumes zijn de voorkeursmethode om persistente gegevens te verwerken die zijn gemaakt door en gebruikt worden door Docker-containers. Laten we eens kijken hoe dit werkt door te bespreken hoe je Docker-volumes maakt op Windows. Je leert ook hoe je ze beheert!

Deze blogpost heeft een bijbehorende video gemaakt door TechSnips-bijdrager, Matt McElreath. Voel je vrij om te kijken of, als je de voorkeur geeft aan tekst, verder te lezen!

Opslaan van Persistente Gegevens

Als je persistente gegevens voor containers wilt opslaan, zijn er een paar opties. Eerst laat ik je zien hoe je een bind-mount gebruikt. Ik bevind me momenteel in een map genaamd data op mijn C:\. Als ik de inhoud van deze map weergeef, zie je dat ik vijf tekstbestanden heb.

Multiple text files in the C:\data folder

Als ik deze map beschikbaar wil maken voor een container, kan ik deze koppelen bij het starten van de container.

Laten we een container uitvoeren met docker run. Ik ga deze container in de interactieve modus uitvoeren en vervolgens -V specificeren. Hier geef ik het pad naar mijn gegevensmap op, gevolgd door een dubbele punt, en dan specificeer ik het pad binnen de container waar ik wil dat deze map wordt gekoppeld.

Voor dit ga ik de map C:\shareddata specificeren. Dan zal ik de Windows server core image specificeren en tot slot zal ik specificeren dat ik PowerShell wil uitvoeren zodra ik binnen de container ben.

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

Nu ik binnen de nieuwe container ben, als ik de inhoud van C:\ opsom, zie je dat ik een shareddata map heb.

Listing directory contents in a Docker container

Laten we die map ingaan en de inhoud ervan opsommen. Hier zijn mijn vijf testbestanden die zich op mijn containerhost bevinden.

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

We kunnen hierboven zien dat het nieuwe bestand is aangemaakt vanuit de container. Nu zal ik deze container verlaten, wat deze zal afsluiten door exit uit te voeren.

Als ik docker ps uitvoer, zie je dat er momenteel geen draaiende containers zijn.

Looking for running containers

Gegevens opnemen in Docker-volumes

Laten we nu weer de inhoud van de datamap opsommen vanaf mijn containerhost.

Listing files on the container host

We kunnen het nieuwe bestand zien dat vanuit de container is aangemaakt, genaamd containertest. Bind-mounts hebben echter enkele beperkte functionaliteiten, dus volumes zijn de voorkeursmethode om te bereiken wat we proberen te doen. Om te beginnen met volumes, kunnen we dezelfde opdracht uitvoeren om een container te starten, maar deze keer met een paar kleine verschillen. Waar we het volume hebben gespecificeerd, in plaats van het pad op het bestandssysteem van de containerhosts te gebruiken, ga ik het woord hostdata gebruiken als de naam van een volume dat ik wil maken en gebruiken.

Vanuit de nieuwe container, als ik de inhoud van C:\ opsom, zie je opnieuw dat ik een map genaamd shareddata heb.

Listing files

Als ik de inhoud van die map opsom, is deze momenteel leeg omdat we een leeg volume hebben aangemaakt. Laten we nu Ctrl-P-Q uitvoeren, waardoor we uit de draaiende container gaan, maar deze wel op de achtergrond blijft draaien.

Vanaf de containerhost voert u docker volume ls uit. Dit geeft een lijst van de huidige volumes op deze containerhost. Ik heb een volume genaamd hostdata, dat is aangemaakt toen ik het specificeerde in het docker run commando.

Listing Docker volumes

Als ik docker ps uitvoer, kunnen we onze draaiende container zien.

Listing running containers

Stop die container met docker stop. Nu hebben we geen draaiende containers meer.

Stopping a Docker container

Verwijder de gestopte containers door docker rm uit te voeren. Als ik de volumes opnieuw opsom, kun je zien dat het hostdata volume nog steeds beschikbaar is en aan nieuwe containers kan worden gekoppeld.

Listing Docker volumes

Het maken van Docker-volumes

Een andere manier om een volume te maken is met het docker volume create commando. Als u geen naam opgeeft, geeft Docker het een naam die bestaat uit een lange lijst van willekeurige tekens. Anders kunt u hier een naam opgeven. Ik ga dit volume logdata noemen. Nu kunnen we zien dat het in de lijst staat wanneer we de volumes opnieuw opsommen.

Creating a new Docker volume

U gaat dat nu koppelen aan een nieuwe container. Gebruik opnieuw docker run en specificeer voor het volume het zojuist gemaakte volume en koppel het aan c:\logdata.

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

Vanuit de container ga je naar de map logdata en maak je een paar bestanden aan. Op dit moment zijn er geen bestanden in deze map, dus ga je gang en maak er een paar aan.

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

Nu heb ik twee logbestanden in deze map.

Two files in C:\logdata

Voer opnieuw Ctrl-P-Q uit om deze container te verlaten terwijl deze nog draait. Terwijl die container draait, start je een nieuwe container op met dezelfde volume gemonteerd.

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

Als we een lijst maken van de logdata map in de nieuwe container, kunnen we zien dat de twee logbestanden worden gedeeld.

Two log files being shared with containers

Verlaat nu deze container. Je zou nog steeds één draaiende container en twee gestopte containers moeten hebben.

Two containers still running

Stop nu alle draaiende containers, voer vervolgens docker rm uit om alle gestopte containers te verwijderen.

Removing Docker containers

Maak opnieuw een lijst van de volumes. Het logdata volume is nog steeds beschikbaar om te worden gemonteerd naar toekomstige containers.

Volume still available

Als je docker volume uitvoert, krijg je wat gebruikshulp voor het commando.

Docker volume syntax

Inspecteren van Docker Volumes

We hebben al gekeken naar create, laten we nu doorgaan naar inspect. Als ik docker volume inspect uitvoer tegen het logdata volume, zal het de eigenschappen voor dat volume retourneren, inclusief het aankoppelpunt dat het fysieke pad naar het volume op de containerhost is.

Inspecting Docker volumes

Laten we die map openen met Invoke-Item en eens kijken. Onder de logdata map is er een map genaamd data. Als we die openen, kunnen we de bestanden zien die eerder zijn aangemaakt vanuit de container.

Files created earlier

Verwijderen van Docker Volumes

Om een volume te verwijderen, kunnen we docker volume rm uitvoeren, gevolgd door de naam van het volume dat je wilt verwijderen.

> docker volume rm logdata

Nu, als ik de volumes lijst, is logdata er niet meer.

Listing Docker volumes

Tenslotte kunnen we prune gebruiken om alle ongebruikte lokale volumes te verwijderen. Dit zal alle volumes verwijderen die niet gekoppeld zijn aan een draaiende of gestopte container.

Inspecting the prune parameter

Je wilt voorzichtig zijn met dit commando, dus er is een waarschuwing en een prompt om er zeker van te zijn dat je dit echt wilt doen. Als ik Y typ en op enter druk, zal het laten zien welke volumes zijn verwijderd.

En als ik mijn volumes weer opnoem, kun je zien dat ze allemaal zijn verwijderd.

No Docker volumes exist

Samenvatting

In deze blogpost zou je een goed overzicht moeten hebben gekregen van het beheren van Docker-volumes in Windows. Docker is een geweldig containerplatform. Met zijn ondersteuning voor Windows en jouw nieuw verworven vaardigheden in het beheren van Docker-volumes, ben je onstuitbaar!

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