Hva er Docker?
Du skal sette opp en webserver på en Linux-server. Én mulighet er å installere webserveren og alle avhengighetene direkte i serverens operativsystem. Med Docker kan du i stedet hente et ferdig image og opprette en container fra det.
Her skal du kunne forklare forskjellen på image og container og vise hva Docker gjør mellom en kommando og en kjørende tjeneste. Du trenger ikke installere noe ennå.
Før du begynner: Kan du forklare forskjellen mellom en VM og en container? Hvis du er usikker, start med Containere og virtuelle maskiner. Der ser du også hvordan Docker kan kjøre inne i en Linux-VM på Proxmox.
Plass i fagstoffet: Docker er et verktøy for containerisering. Operativsystemkjernen forklarer hva containerne deler. Oversiktskartet viser forholdet mellom operativsystem, VM, container og verktøy.
Docker er verktøyet som håndterer containerne
Docker kan bygge og hente images, opprette og starte containere og håndtere nettverk og lagring for dem. På en Linux-server gjør Docker Engine dette arbeidet.
Når du skriver docker run, bruker du Docker sin kommandolinjeklient. Klienten sender en forespørsel til Docker-tjenesten, dockerd, som håndterer containeren. I øvingsoppsettet kjører både klienten og tjenesten inne i Linux-VM-en.
Du kan skrive kommandoen i VM-ens konsoll i Proxmox eller i en SSH-økt til samme VM. Begge veiene styrer Docker i den samme VM-en. Docker Desktop er et annet produkt som samler Docker-verktøy i et skrivebordsprogram; det er ikke nødvendig for serveroppsettet her.
Ett image kan brukes til flere containere
Et image er en pakke med filene, programmet og innstillingene som brukes til å opprette en container. nginx:alpine er et eksempel: nginx angir image-navnet, og alpine er en tagg, en etikett som peker på en image-variant. En tagg kan senere peke på en ny versjon.
En container er en egen instans opprettet fra imaget, med eget navn, tilstand og skrivbart lag. Containeren kan være opprettet, kjørende eller stoppet. Et stoppet program betyr derfor ikke at containeren er slettet.
Imaget endres ikke når du endrer en fil i containerens skrivbare lag. Oppretter du en annen container fra samme image, får den sitt eget skrivbare lag.
Hvor kommer imaget fra?
Et containerregister (registry) lagrer og distribuerer images. Docker Hub og GitHub Container Registry er to eksempler.
Når et image finnes i registeret, men ikke på serveren, kan Docker hente det med docker pull. Du kan også bygge et eget image fra kildekode og en Dockerfile; det møter du i Level 2.
| Begrep | I webservereksemplet |
|---|---|
| Register | Docker Hub, der Nginx-imaget kan hentes. |
| Image | nginx:alpine, den nedlastede pakken. |
| Container | min-nginx, en egen instans opprettet fra pakken. |
| Tjeneste | Webserveren som svarer på HTTP-forespørsler mens programmet kjører. |
Hva betyr de første kommandoene?
Du trenger bare å lese dette eksemplet nå. Installasjon og praktisk gjennomføring kommer i Level 1.
docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps
Den første kommandoen henter imaget. Den andre oppretter og starter containeren min-nginx og kobler serverens port 8080 til containerens port 80. Den tredje viser kjørende containere. Nginx er programmet som svarer på forespørsler; Docker håndterer miljøet det kjører i.
Forutsi hva som blir igjen
Du har ett image og to containere fra det. Du stopper og fjerner bare min-nginx.
- Finnes imaget fortsatt?
- Forsvinner
test-nginxogså? - Kan du opprette en ny container fra imaget?
Kontroller svaret: Imaget finnes fortsatt, og test-nginx er ikke fjernet. Du kan opprette en ny container fra det samme imaget. Filer som bare lå i det skrivbare laget til min-nginx, er derimot borte når den containeren er fjernet.
Du er klar til Level 1 når du kan forklare forskjellen med egne ord og peke ut register, image, container og tjeneste i eksemplet. Hvis du blander image og container, bruk figuren og prøv igjen med andre containernavn. Vil du undersøke mer, forklar hvorfor docker ps alene ikke viser om imaget finnes eller om en stoppet container fortsatt er lagret.
Videre
Installer Docker Engine. Bruk containeriseringsressursen som støtte når du vil se forholdet til VM-er og virtualisering.
Kilder: Docker-arkitektur, image og containerens livsløp. Illustrasjonen er tegnet for denne ressursen.