Als u nieuw bent met containers en Docker en voornamelijk op Windows werkt, staat u een traktatie te wachten. In dit artikel leert u hoe u Docker op Windows 10 kunt instellen met behulp van Docker Desktop voor Windows of eenvoudigweg aangeduid als Docker Desktop in dit artikel.
Docker Desktop is de Docker Engine en een beheerclient die samen zijn verpakt voor eenvoudig gebruik in Windows 10. In dit artikel installeert u Docker Desktop, implementeert u uw eerste container en deelt u gegevens tussen uw host en uw containers.
Vereisten voor Docker op Windows
Dit is een stapsgewijs artikel waarin verschillende stappen worden gedemonstreerd in Docker Desktop voor Docker op Windows. Zorg ervoor dat u aan een paar specifieke vereisten voldoet voordat u verdergaat.
- Een internetverbinding om meer dan 800 MB aan gegevens te downloaden
- Windows 10 64-bit met Pro, Enterprise of Education-editie met versie 1703 of nieuwer. Dit is vereist om Hyper-V uit te voeren op Windows 10.
- A CPU with SLAT (nested paging) compatibility. All AMD/Intel processors since approximately 2008 are SLAT compatible
- Ten minste 4 GB RAM
- BIOS-hardwarevirtualisatie, soms aangeduid als Virtualization Technology of VTx. Dit moet zijn ingeschakeld en worden weergegeven als Ingeschakeld in het prestatietabblad van Taakbeheer zoals hieronder wordt weergegeven.

Docker Desktop downloaden en installeren
Als eerste moet je Docker Desktop downloaden en installeren om Docker op Windows te kunnen gebruiken. Docker Desktop is beschikbaar in twee versies: een stabiele versie en een testversie.
De stabiele versie wordt elk kwartaal uitgebracht en zorgt voor een volledig geteste applicatie. In dit artikel zal je de stabiele versie gebruiken.
Let op: Bij de installatie zal Docker Desktop je vragen om de Hyper-V hypervisor te installeren als deze nog niet geïnstalleerd is. Door dit te doen, voorkomt de Hyper-V hypervisor dat gebruikersmodushypervisors zoals VirtualBox, VMWare, enz. gast-VM’s kunnen uitvoeren. Ondersteuning voor Hyper-V in VirtualBox en VMWare is beperkt maar komt eraan.
Je hebt ook de mogelijkheid om Docker Desktop handmatig te downloaden vanaf Docker.com of via de Windows-pakketbeheerder, Chocolatey. Laten we kort beide methoden bespreken.
Vanaf Docker.com
Om Docker Desktop rechtstreeks te downloaden vanaf docker.com, kun je naar de productpagina gaan, een account registreren en het daar downloaden. Dit is de voorkeursmethode als je van plan bent Docker in productie te gebruiken door een account te registreren.
Als je Docker gewoon wilt uitproberen voor de eerste keer, kun je het ook direct downloaden, wat veel makkelijker is.
Nadat het EXE-bestand is gedownload, voer je het uit en klik je door de prompts terwijl je alle standaardinstellingen accepteert.
Wanneer je wordt gevraagd of je van plan bent om Windows-containers in plaats van Linux-containers te gebruiken, zoals hieronder wordt weergegeven, schakel je het selectievakje niet in. In dit artikel zul je Linux-containers gebruiken.

Zodra de installatie is voltooid, start je de computer opnieuw op.
Door de optie te selecteren om Windows-containers of Linux-containers te gebruiken, vertelt Docker om afbeeldingen aan een Windows-kernel of Linux-kernel te koppelen. Je kunt deze instelling op elk moment na de installatie wijzigen door met de rechtermuisknop op het Docker-pictogram in het systeemvak te klikken en Switch to Windows containers te selecteren, zoals hieronder wordt weergegeven.

Het gebruik van Chocolatey
De andere optie om Docker Desktop te downloaden en te installeren is met Chocolatey. Chocolatey automatiseert veel van de download-/installatietaken voor u. Open een opdrachtregelconsole (cmd of PowerShell) als beheerder om het programma in één keer te downloaden en te installeren door de onderstaande opdracht uit te voeren.
Zodra dit is voltooid, start u Windows 10 opnieuw op.
Als u op een gegeven moment de testversie wilt uitproberen, kunt u deze downloaden en installeren door
choco install docker-desktop --pre
uit te voeren.
Valideren van de Docker Desktop-installatie
Nadat Docker Desktop is geïnstalleerd, wordt het automatisch uitgevoerd als een service die Docker op Windows levert. Het wordt weergegeven in het systeemvak wanneer u zich aanmeldt bij Windows na het opnieuw opstarten. Maar hoe weet u eigenlijk zeker dat het werkt?
Om te controleren of Docker Desktop correct werkt, opent u een opdrachtregelconsole en voert u het commando docker
uit. Als de installatie goed is verlopen, ziet u een Docker-opdrachtreferentie.
Tot slot kunt u Docker een voorbeeldcontainerimage genaamd hello-world laten downloaden en uitvoeren door de opdracht docker run hello-world
uit te voeren. Als alles goed is, ziet u de onderstaande uitvoer.

Opdrachten uitvoeren in Docker-containers
Docker Desktop is geïnstalleerd en je hebt geverifieerd dat alles goed werkt? Wat nu? Om aan de slag te gaan met Docker op Windows, is een veelvoorkomende taak het uitvoeren van commando’s in een Docker-container. Met behulp van het docker run
commando kun je commando’s rechtstreeks vanaf de host (je Windows 10-pc) naar een draaiende container sturen.
Om commando’s uit te voeren in een container met docker run
, geef je eerst de naam van een image op, gevolgd door het commando. Om te beginnen, vertel je Docker om het commando hostname
uit te voeren in een container genaamd alpine, zoals hieronder te zien is.
Aangezien je de alpine Docker-image nu niet op je computer hebt, zal Docker op Windows de kleine image downloaden van de Docker Hub, een container opstarten op basis van die image en het commando rechtstreeks naar de container sturen, om het vervolgens in één keer af te sluiten.
Als je de container wilt laten draaien, kun je ook de -it
parameter gebruiken. Deze parameter vertelt Docker om de container in “interactieve modus” te houden, zodat deze actief blijft nadat het commando is uitgevoerd. Je zult dan een opdrachtprompt zien waar je mee aan de slag kunt.
Als je klaar bent in de terminal, typ je exit
om terug te keren naar Windows 10.
Toegang tot bestanden vanaf de Docker-host in containers
Een andere veelvoorkomende taak is toegang krijgen tot hostbestanden vanuit containers. Om hostbestanden in containers te benaderen, biedt Docker op Windows de mogelijkheid om een map vanaf uw bureaublad te koppelen en deze map te delen met uw container. Dit proces wordt binding genoemd.
Om een binding te maken, maakt u een map op een lokale schijf. Voor dit voorbeeld zal ik E:\ gebruiken en deze input noemen. Vervolgens wordt er een nieuw tekstbestand met de naam file.txt in de map gemaakt. Gebruik gerust een andere pad- en bestandsnaam naar keuze.
Zodra u de map heeft die u wilt delen tussen de host en de container, moet Docker de map koppelen met behulp van de --mount
-parameter. De --mount
-parameter vereist drie argumenten: een montage type, een bronmap voor de host en een doelmap. Het doelpad zal een symbolische koppeling zijn binnen de container.
Hieronder ziet u een voorbeeld van het koppelen van de volledige E:\ van de Windows 10-host, zodat deze wordt weergegeven als de map /home/TEST in de Linux-container.
Wanneer u probeert een hostmap te koppelen, zal Docker Desktop u om toestemming vragen om deze schijf te delen met de Docker-containers, zoals hieronder te zien is.

Als u het bestand file.txt in de Windows 10-map heeft gemaakt zoals eerder beschreven, voer dan cat /home/TEST/input/file.txt
uit. U zult zien dat de inhoud wordt weergegeven.
Nu, verwijder de input map die je net hebt aangemaakt en voer het cat ...
commando opnieuw uit. Let op dat de shell nu aangeeft dat het bestand niet meer bestaat.

Toewijzen van netwerkpoorten
Nog een belangrijk concept om te weten is hoe Docker op Windows omgaat met netwerken. Voor een korte introductie, laten we eens kijken wat er nodig is om toegang te krijgen tot een webservice die in een container wordt uitgevoerd vanaf de lokale host.
Eerst start je een demo-image op dat een voorbeeldwebpagina zal uitvoeren. Download en start de Docker-image genaamd dockersamples/static-site. Je gebruikt docker container run
om dit te doen.
Het volgende commando voert vier acties tegelijk uit:
- Downloadt een Docker-image van Docker Hub genaamd static-site in de “docker-samples” “map”
- Start een containerinstantie op vanuit de static-site image
- Koppelt de container direct los van de terminal-achtergrond (
--detach
) - Maakt de netwerkpoorten van de draaiende container toegankelijk voor de Windows 10-host (
--publish-all
)
Na uitvoering geeft Docker het container-ID terug dat is gestart zoals hieronder getoond.

Publiceren van netwerkpoorten
Sinds het gebruik van de --publish-all
parameter, worden de lokale hostpoorten nu toegewezen aan het netwerkstack van de container. U kunt de subopdracht docker ps
gebruiken om alle actieve containers weer te geven, inclusief welke poorten zijn toegewezen aan alle actieve containers. In het onderstaande voorbeeld wordt één container uitgevoerd waarbij de hostpoort 32777 is toegewezen aan de containerpoort 80 en de hostpoort 32776 is toegewezen aan de containerpoort 443.

Docker op Windows kent containers willekeurige poorten toe bij gebruik van de --publish-all
parameter, tenzij ze expliciet worden gedefinieerd.
Open nu een webbrowser en ga naar http://localhost:32777 of de poort die Docker heeft toegewezen om naar poort 80 te worden gemapt, zoals uitvoer van docker ps
. Als alles goed gaat, zou u de onderstaande webpagina moeten zien.

Het wijzigen van de gepubliceerde poorten
U heeft nu een Docker-container die in Docker op Windows een eenvoudige webpagina serveert. Gefeliciteerd! Maar nu moet u een specifieke poortbinding specificeren in plaats van te vertrouwen op de willekeurige poortselectie met --publish-all
. Geen probleem. Gebruik de parameter -p
.
Stop eerst de actieve container door een unieke tekenreeks van de container-ID op te geven. U kunt deze container-ID vinden door docker ps
uit te voeren. Zodra u de container-ID kent, stopt u de container en start u een nieuwe waarbij u Docker opdraagt een specifieke poort toe te wijzen om te publiceren.
De syntax voor het specificeren van een poort is <externe poort>:<container poort>
. Gebruik voor elke poort die je wilt publiceren, de --publish
of -p
schakelaar met de externe en container poortnummers zoals hieronder weergegeven.
Wanneer je een container-ID specificeert, hoef je alleen maar genoeg van de ID in te typen zodat deze uniek is. Als je slechts één container uitvoert en de ID is
f766f4ac8d66bf7
, kun je de container identificeren met elk aantal tekens, inclusief alleenf
. De vereiste is dat wat je typt, het mogelijk maakt om een enkele container uniek te identificeren.
Ga nu naar je webbrowser en ga naar localhost:1337
. Onthoud dat je de afbeelding niet verandert en dat deze altijd luistert op poort 80; je wijzigt de poortvertaalregel in de Docker-configuratie waarmee je verbinding kunt maken met de container.

Stoppen van alle containers
Met behulp van docker stop
kun je een container stoppen, maar hoe stop je meerdere containers tegelijk? Een manier om dit te doen is door meerdere, door spaties gescheiden container-ID’s op te geven. Hieronder zie je een voorbeeld van hoe je drie containers met de ID’s fd50b0a446e7
, 36ee57c3b7da
en 7c45664906ff
kunt stoppen.
Als je Docker-containers beheert in PowerShell, kun je ook een snelkoppeling gebruiken om alle containers te stoppen. Geef een lijst met container-ID’s door via
docker ps -q
naar de stopparameter via de commando-uitbreiding van PowerShelldocker stop (docker ps -q)
.
Bevestig dat alle containers zijn gestopt door te controleren of er geen containers worden vermeld wanneer je docker ps
typt.
Opschonen
Je hebt een paar containerafbeeldingen gedownload en enkele containers uitgevoerd die nu zijn gestopt. Hoewel ze gestopt zijn, is hun toegewezen opslagruimte nog steeds aanwezig op de lokale hostschijf. Je moet de containers verwijderen om die ruimte vrij te maken en te voorkomen dat je werkruimte vervuild raakt.
Gebruik de parameter ‘rm’ om een enkele container te verwijderen, zoals hieronder wordt weergegeven.
Of gebruik de parameter ‘prune’ om alle gestopte containers te verwijderen, zoals hieronder wordt weergegeven.