Beetje Coderen

Les 1 van 5

Docker installeren

Installeer Docker Desktop op Windows (met WSL2) of macOS, of Docker Engine op Linux, en controleer met docker run hello-world dat alles werkt.

📖 ± 7 min lezen ⏱ 30–45 minuten leestijd + oefenen 📝 quiz

Een laptop met een terminal en een walvis met containers, die naar drie installatiekaartjes voor Windows, macOS en Linux wijzen

🎯 Na deze les kun je

  • Docker installeren op jouw besturingssysteem
  • controleren dat de Docker-client en de Docker-engine allebei werken
  • uitleggen wat er gebeurt als je docker run hello-world typt

Bij de lessen op beetjecoderen.nl hoort vaak een lab: een opdracht die je in een kant-en-klare werkomgeving uitvoert en daarna automatisch laat controleren. Die werkomgeving is een Docker-container. Daarin staan de juiste versie van Python, de C-compiler of PHP al klaar, plus de startbestanden van de les en het controleprogramma beetje. Je hoeft op je eigen computer dus niets anders te installeren dan Docker. In deze les doe je precies dat, en je controleert dat het werkt.

Wat installeer je eigenlijk?

Docker bestaat uit twee delen:

  • de Docker-engine (de daemon): het programma op de achtergrond dat images downloadt en containers start;
  • de Docker-client: het commando docker dat je in de terminal typt. De client stuurt jouw opdracht naar de engine.

Containers van de labs zijn Linux-containers. Op Linux draait de engine direct op je eigen systeem. Op Windows en macOS kan dat niet: daar zorgt Docker Desktop voor een kleine, verborgen Linux-machine waarin de engine draait. Je merkt daar weinig van, maar het verklaart een paar dingen die je later tegenkomt, zoals een instelling voor schijfruimte en geheugen in Docker Desktop.

Let op: voor het installeren heb je beheerdersrechten nodig. Op een computer van school of werk mag dat soms niet. Vraag het dan aan de IT-afdeling, of gebruik een eigen computer. Docker Desktop is gratis voor persoonlijk gebruik, onderwijs en kleine bedrijven; voor grotere bedrijven gelden de licentievoorwaarden van Docker.

Windows: Docker Desktop met WSL2

Op Windows 10 en 11 gebruikt Docker Desktop WSL2 (Windows Subsystem for Linux) om de Linux-machine te draaien. Installeer eerst WSL2, daarna Docker Desktop.

Stap 1: WSL2 installeren. Open PowerShell als administrator (rechtsklik op Start → Terminal (beheerder)) en typ:

wsl --install

Dit zet de benodigde Windows-onderdelen aan en installeert standaard Ubuntu. Herstart je computer als daarom gevraagd wordt. Na de herstart opent Ubuntu en vraagt het om een gebruikersnaam en wachtwoord voor Linux; die mag je zelf kiezen. Controleer daarna in PowerShell:

wsl --status

Je hoort daar te zien dat de standaardversie 2 is. Staat er 1, typ dan wsl --set-default-version 2.

Stap 2: Docker Desktop installeren. Download Docker Desktop voor Windows van de officiële site (docs.docker.com → Get Docker) en start het installatieprogramma. Laat de optie Use WSL 2 instead of Hyper-V aangevinkt. Start Docker Desktop na de installatie en wacht tot het walvisje onderaan in het systeemvak stil staat en Docker Desktop Engine running meldt.

Stap 3 (aanrader): Docker ook in Ubuntu gebruiken. Open in Docker Desktop Settings → Resources → WSL integration en zet je Ubuntu-distributie aan. Dan werkt het commando docker zowel in PowerShell als in de Ubuntu-terminal. In de volgende lessen zie je waarom werken vanuit Ubuntu handig is (vooral bij het bewaren van bestanden).

Krijg je bij het starten een melding dat virtualisatie uit staat? Dan moet je virtualisatie (Intel VT-x of AMD-V/SVM) aanzetten in het BIOS/UEFI van je computer. Hoe dat heet en waar het zit, verschilt per merk; zoek op het merk van je laptop plus "virtualization BIOS".

macOS: Docker Desktop

Op een Mac download je Docker Desktop van dezelfde officiële site. Kies de juiste versie:

  • Apple silicon (M1, M2, M3, M4 …): de versie voor Apple chip;
  • Intel: de versie voor Intel chip.

Weet je niet welke je hebt? Kies in het Apple-menu (linksboven) Over deze Mac: bij Chip staat "Apple M…" of bij Processor staat "Intel".

Open het .dmg-bestand, sleep Docker naar Apps en start het. De eerste keer vraagt macOS om toestemming en om je wachtwoord. Wacht tot het walvisje in de menubalk aangeeft dat Docker draait.

Gebruik je Homebrew? Dan kan het ook zo:

brew install --cask docker

Daarna start je Docker één keer vanuit Apps, zodat de engine opstart.

Linux: Docker Engine via je pakketbeheerder

Op Linux heb je geen Docker Desktop nodig: je installeert de engine direct. De meeste distributies hebben Docker in hun eigen pakketbronnen.

Debian en Ubuntu:

sudo apt update
sudo apt install docker.io

Fedora:

sudo dnf install moby-engine

Arch Linux:

sudo pacman -S docker

Wil je altijd de nieuwste versie? Dan kun je ook de pakketbron van Docker zelf toevoegen (pakket docker-ce); de stappen staan per distributie op docs.docker.com. Voor de labs is de versie uit je distributie ruim voldoende.

Zet de engine aan en laat hem voortaan automatisch starten:

sudo systemctl enable --now docker

Standaard mag alleen root met de engine praten, dus zonder extra stap moet je elk commando met sudo typen. Wil je dat niet, voeg jezelf dan toe aan de groep docker:

sudo usermod -aG docker $USER

Log daarna uit en weer in (of herstart), anders geldt de nieuwe groep nog niet.

Weet wat je doet: wie in de groep docker zit, kan via Docker in feite alles op de computer doen wat root kan. Op je eigen laptop is dat meestal prima. Op een gedeelde computer of server geef je die groep niet zomaar aan iedereen. Liever niet? Typ dan gewoon sudo docker ….

Controleren: werkt het?

Open een terminal (PowerShell, de Ubuntu-terminal, Terminal op de Mac of je Linux-terminal) en vraag eerst de versies op:

docker version

Je ziet twee blokken: Client en Server. Zie je alleen Client en daarna een fout als Cannot connect to the Docker daemon, dan draait de engine niet: start Docker Desktop, of op Linux sudo systemctl start docker.

Dan de echte test:

docker run hello-world

De eerste keer zie je zoiets als:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Wat gebeurde er net?

Dat ene commando liet de hele keten werken:

  1. De client vroeg de engine om een container te starten van het image hello-world.
  2. De engine had dat image nog niet, en downloadde (pullde) het van Docker Hub, de standaard-registry.
  3. De engine maakte van het image een container en startte die.
  4. Het programma in de container schreef de tekst naar je terminal en stopte. Daarmee stopte de container ook.

Typ je hetzelfde commando nog een keer, dan is het veel sneller: het image staat nu lokaal en wordt niet opnieuw gedownload. Met docker images zie je welke images er op je computer staan, en met docker ps -a alle containers, ook gestopte.

Veelgemaakte fouten

  • docker: command not found of 'docker' is not recognized: Docker is niet (goed) geïnstalleerd, of je terminal stond al open tijdens de installatie. Open een nieuwe terminal.
  • Cannot connect to the Docker daemon: de engine draait niet. Start Docker Desktop en wacht tot die klaar is, of start de dienst op Linux.
  • permission denied while trying to connect to the Docker daemon socket (Linux): je zit (nog) niet in de groep docker, of je bent na usermod niet opnieuw ingelogd.
  • Docker Desktop blijft hangen op Starting (Windows): controleer met wsl --status dat WSL2 werkt en dat virtualisatie aan staat.

In les 4 komen nog meer foutmeldingen langs, met oplossingen.

Oefenen

  1. Typ docker version en zoek in de uitvoer bij Server de regel OS/Arch. Wat staat er? (Op Windows en macOS staat er linux/…, ook al gebruik je geen Linux. Snap je nu waarom?)
  2. Draai docker run hello-world twee keer en vergelijk de uitvoer. Welke regels ontbreken de tweede keer?
  3. Typ docker ps -a. Hoeveel hello-world-containers zie je? Ruim ze op met docker container prune (beantwoord de vraag met y).

Samenvatting

  • Docker bestaat uit een engine (achtergrondprogramma) en een client (het commando docker).
  • Windows: eerst wsl --install, dan Docker Desktop met de WSL2-optie. macOS: Docker Desktop voor Apple chip of Intel. Linux: docker.io, moby-engine of docker via je pakketbeheerder, daarna systemctl enable --now docker.
  • docker version moet een Client- én een Server-blok tonen.
  • docker run hello-world downloadt een image, start een container en toont Hello from Docker!. Dan werkt je installatie.

In de volgende les start je je eerste echte lab-container.

📝 Quiz: Docker installeren

5 vragen · 70% nodig om te slagen

1. Wat doet de Docker-client (het commando `docker`)?
2. Wat installeer je op Windows vóór Docker Desktop?
3. `docker version` toont alleen een Client-blok en daarna *Cannot connect to the Docker daemon*. Wat is er aan de hand?
4. Waarom moet je na `sudo usermod -aG docker $USER` opnieuw inloggen?
5. Waarom is `docker run hello-world` de tweede keer sneller?

Log in of maak gratis een account om deze quiz te maken.