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.

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.
Nu ik binnen de nieuwe container ben, als ik de inhoud van C:\ opsom, zie je dat ik een shareddata map heb.

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

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.

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.

Gegevens opnemen in Docker-volumes
Laten we nu weer de inhoud van de datamap opsommen vanaf mijn containerhost.

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.

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.

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

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

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.

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.

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.
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.
Nu heb ik twee logbestanden in deze map.

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.
Als we een lijst maken van de logdata map in de nieuwe container, kunnen we zien dat de twee logbestanden worden gedeeld.

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

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

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

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

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.

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.

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.
Nu, als ik de volumes lijst, is logdata er niet meer.

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.

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.

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!