Wat is Docker?

Een veelgebruikt softwarepakket om containerimages te bouwen, images met registries uit te wisselen en containers te starten en te beheren. Het bouwt images uit de instructies in een Dockerfile en start containers met docker run. Het kan poorten publiceren met -p, gegevens bewaren in volumes en bind mounts, en het netwerk configureren. De formaten van images en containers zijn gestandaardiseerd als specificaties van het OCI (Open Container Initiative); dezelfde images kunnen dus ook met andere tools dan Docker worden gebruikt.

Japanse benaming: Docker

“Docker” komt voor in 6 oefenvragen uit 1 onderwerpen, bijv. Basis van cloud en containers.

Vakgebied: Basis van cloud en containers

Nu oefenen: vragen over Docker

Op een Linux-host wordt met Docker een container gestart uit een image dat op een andere distributie dan die van de host is gebaseerd, en daarin worden uname -r (een opdracht die de release van de kernel toont) en cat /etc/os-release (een opdracht die informatie over de distributie toont) uitgevoerd. Welke beschrijving van de resultaten is juist?

  1. AZowel uname -r als /etc/os-release toont informatie over de kernel en de distributie van de host
  2. BZowel uname -r als /etc/os-release toont informatie over de distributie waarop het image is gebaseerd en over de kernel daarvan
  3. Cuname -r toont de kernel van de host, en /etc/os-release toont de distributie van het image
Antwoord en toelichting tonen

Antwoord: C. uname -r toont de kernel van de host, en /etc/os-release toont de distributie van het image

Een container deelt de kernel van de host; uname -r, dat de kernel bevraagt, toont daarom ook in de container de release van de kernel van de host. /etc/os-release is daarentegen een bestand en wordt gelezen uit het bestandssysteem dat de container ziet, dus uit het image; het toont de naam van de distributie van het image. Een image bevat geen kernel, alleen bestanden van de gebruikersruimte (userspace) zoals opdrachten en bibliotheken. Een programma dat een functie nodig heeft die de kernel van de host niet heeft, werkt daarom ook in een container niet.

In een container die uit een image is gestart, wordt het configuratiebestand /etc/app.conf gewijzigd, dat deel uitmaakt van het image. Welke beschrijving van wat er gebeurt met het gangbare opslagmechanisme van Docker (zoals overlay2) is juist?

  1. AHet bestand wordt naar de beschrijfbare laag van de container gekopieerd en daar gewijzigd; het image en andere containers worden dus niet beïnvloed
  2. BHet bestand in de laag van het image wordt rechtstreeks gewijzigd; andere containers die uit hetzelfde image zijn gestart, zien dus ook de nieuwe inhoud
  3. CDe lagen van een image zijn alleen-lezen; bestanden uit het image kunnen dus niet worden gewijzigd en het schrijven mislukt met een fout
Antwoord en toelichting tonen

Antwoord: A. Het bestand wordt naar de beschrijfbare laag van de container gekopieerd en daar gewijzigd; het image en andere containers worden dus niet beïnvloed

Het bestandssysteem van een container toont de alleen-lezen lagen van het image met daarboven een beschrijfbare laag voor die container als één enkele boom. De eerste keer dat een bestand uit een lagere laag wordt gewijzigd, wordt het naar de beschrijfbare laag gekopieerd, en daarna wordt die kopie gebruikt (copy-on-write). De lagen van het image blijven dus ongewijzigd, en andere containers die hetzelfde image delen, worden niet beïnvloed. Omdat de eerste kopie van een groot bestand tijd kost, worden gegevens waarnaar vaak wordt geschreven, zoals de gegevens van een database, in een volume geplaatst.

“Docker” in de toelichting

Vragen met “Docker” (6)

  1. Op een Linux-host wordt met Docker een container gestart uit een image dat op een andere distributie dan die van de host is gebaseerd, en daarin worden uname -r (een opdracht die de release van de kernel toont) en cat /etc/os-release (een opdracht die informatie over de distributie toont) uitgevoerd. Welke beschrijving van de resultaten is juist?
  2. In een container die uit een image is gestart, wordt het configuratiebestand /etc/app.conf gewijzigd, dat deel uitmaakt van het image. Welke beschrijving van wat er gebeurt met het gangbare opslagmechanisme van Docker (zoals overlay2) is juist?
  3. Welke combinatie van de opdracht die bij het bouwen van het image met docker build wordt uitgevoerd en de opdracht die bij het starten van een container met docker run wordt uitgevoerd, is voor het bovenstaande Dockerfile juist?
  4. Een image met de naam pinger, gebouwd uit het bovenstaande Dockerfile, wordt gestart met docker run pinger example.com. Welke opdracht wordt in de container uitgevoerd?
  5. Welke beschrijving van benoemde volumes en bind mounts in Docker, die worden gebruikt om gegevens te bewaren die een container schrijft, is juist?
  6. Een image wordt gehaald (pull) door registry.example.com/team/web:1.4 op te geven. Welke combinatie geeft de betekenis van elk deel van deze verwijzing juist weer?

Verwante termen

Container Copy-on-write JSON (JavaScript Object Notation) Argument Autoscaling Beschikbaarheidszone (availability zone) Blue-green deployment Canary release Containerimage Immutable infrastructure (onveranderlijke infrastructuur)

Naar de woordenlijst