Online zetten: Docker zonder sudo
Hier bouw je op verder: Jezelf in een groep zetten met usermod -aG en Variabelen als $USER
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
Docker draait. Alleen root en de groep docker mogen hem gebruiken, en jij zit nog in geen van beide. Je zet jezelf in de groep, en start je eerste container.
Jezelf toegang geven
sudo usermod -aG docker $USER
$USER is je eigen naam. Een nieuwe groep telt pas als je opnieuw inlogt. Sluit Ubuntu, typ in PowerShell wsl --terminate Ubuntu-24.04, en open Ubuntu opnieuw. Met groups zie je nu ook docker staan.
Wie Docker mag gebruiken, kan een container starten die alles op de computer mag. In de groep docker zitten is dus bijna hetzelfde als root zijn. Zet er alleen jezelf in, en op een server alleen de beheerder.
Je eerste container
docker run hello-world
Het commando docker vraagt de dienst (de daemon) om het image hello-world te draaien. Dat image staat er nog niet, dus de dienst haalt het van Docker Hub, een website vol images. Daarna start hij er een container van, en die zet een tekst op je scherm en stopt.
Daaronder legt de tekst zelf uit wat er gebeurde, in vier stappen. Bekijk daarna wat er op je computer staat:
docker images
docker ps -a
docker images toont het image. docker ps -a toont de container, met Exited (0) bij de status: hij is klaar, zonder fout. Zonder -a zie je alleen containers die nog draaien.
Er gaat iets mis
permission denied
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
Oorzaak: je zit niet in de groep docker, of je bent nog niet opnieuw ingelogd sinds usermod.
Oplossing: typ groups. Staat docker er niet bij, doe dan de stap van Jezelf toegang geven opnieuw, en vergeet wsl --terminate Ubuntu-24.04 niet. Zet geen sudo voor elk docker-commando. Het werkt wel, maar wat Docker dan voor jou in je eigen mappen zet, zoals een back-up in les 37, is van root, en dan mag je het zelf niet meer weggooien.
toomanyrequests
Docker haalt een image niet op, en in de melding staat toomanyrequests of 429 Too Many Requests.
Oorzaak: Docker Hub geeft per internetadres een beperkt aantal images per uur. Op school delen alle laptops één adres, dus de hele klas telt samen.
Oplossing: wacht een uur, of maak een gratis account op Docker Hub en log in met docker login. Dan telt je eigen account, niet het adres van school.
Opdrachten
Opdracht 1: Investigate - Een Linux in een paar seconden
De tekst van hello-world stelt iets voor: docker run -it ubuntu bash. Doe het, en typ in de container cat /etc/os-release en whoami. Typ daarna exit. Wat is dit, en wat zegt docker ps -a erna?
Tip
-it betekent: koppel deze container aan je toetsenbord en je scherm, zodat je erin kunt typen.
Antwoord
Je prompt verandert in iets als root@3f2a9c1e7b54:/#: je zit in een container met een eigen Ubuntu, als root. cat /etc/os-release laat zien welke Ubuntu het image heeft; dat hoeft niet dezelfde te zijn als die van WSL. Na exit stopt de container, en docker ps -a toont hem met Exited. In een paar seconden had je een hele Linux, en die is weg zodra je hem weggooit met docker rm. Wat er dan met de bestanden erin gebeurt, zie je in les 17.
Door naar les 15: je site in een image.