IT og digitalisering
Docker-images: Fra Docker Hub til dine egne containere
Mange udviklere starter med at hente et image fra Docker Hub. Med få kommandoer kan du starte en database, en webserver eller et helt udviklingsmiljø.
Men så snart du selv skal bygge images, håndtere volumes og deploye containere på tværs af miljøer, bliver Docker hurtigt mere komplekst.
At forstå, hvordan Docker-images fungerer, er derfor en vigtig del af moderne DevOps-arbejde.
Hvad er et Docker-image?
Et Docker-image er en skabelon, der indeholder alt det, en applikation skal bruge for at køre:
- runtime-miljø
- biblioteker og afhængigheder
- konfiguration og miljøvariabler.
Når et image startes, bliver det til en container – et isoleret miljø hvor applikationen kører uafhængigt af værtssystemet.
Det betyder, at applikationen kan køre på samme måde i udvikling, test og produktion. Dermed undgår man det klassiske problem:
"Men det virkede jo på min maskine."
Images er opbygget af lag
Docker-images er designet til at være genanvendelige og distribuerbare. Det betyder, at et image kan oprettes én gang og derefter bruges på mange forskellige systemer uden behov for yderligere konfiguration.
Docker-images er opbygget i lag. Hver instruktion i en Dockerfile opretter et nyt lag i imaget.
Denne struktur gør det muligt for Docker at cache eksisterende lag, så builds kan genbruge tidligere trin og dermed blive langt hurtigere.
Lagstrukturen gør også images:
- genanvendelige
- versionsstyrede
- effektive at distribuere.
Når et image er oprettet, ændres det ikke. Hvis du har brug for at ændre et eksisterende Docker-image, opretter du typisk en ny version af det pågældende image med de nødvendige ændringer. Dette understøtter best practices for immutable infrastruktur, hvor opdateringer rulles ud gennem nye versioner af appen, fremfor at ændre i eksisterende installationer.
Brug af præ-byggede images
Docker Hub og andre registries indeholder tusindvis af færdigbyggede images til populære værktøjer som MySQL, Node.js og Redis.
Ved at bruge præ-byggede images kan du hurtigt starte et miljø uden først at installere og konfigurere al software. Eftersom du bygger oven på eksperternes svar på, hvordan en given applikation (MySQL eller lign) skal bygges og køres, kan du koncentrere dig om det, din applikation skal kunne.
Det sikrer også konsistens. Når hele teamet arbejder med samme base image, reduceres risikoen for forskelle mellem udviklings- og produktionsmiljøer.
I praksis bruger mange teams disse images som udgangspunkt og bygger deres egne images ovenpå.
Præ-byggede images er desuden ideelle for CI/CD pipelines (Continuous Integration og Continuous Deployment), hvor automatiseret testing og deployment er essentielt. Docker-images kan nemt integreres i disse pipelines, så releases kommer hurtigt og ikke mindst sikkert ud over stepperne.
Byg dine egne images
Du kan også vælge at tilpasse og udvide præ-byggede imagesfor at passe til mere specifikke behov:
Du kan bruge et præ-bygget image som grundlag og tilføjer dine egne konfigurationer eller applikationer ovenpå. Dette gøres typisk gennem en Dockerfil, hvor du specificerer, hvilke ekstra trin der skal tages, som fx installation af ekstra pakker eller indstilling af en eller flere miljøvariabler.
Når du bygger dine egne Docker-images, bruger du typisk en Dockerfile til at beskrive:
- hvilket base image der bruges
- hvilke pakker der installeres
- hvordan applikationen startes
Det gør det muligt at skabe et standardiseret miljø til udvikling, test og deployment.
Når et image er bygget, kan det gemmes i et registry – fx Docker Hub eller et privat registry – så det kan genbruges og deles i organisationen.
Som udvikler kan det være en god idé at gøre sig bekendt at anvende og tilpasse præ-byggede Docker-images fra fx Docker Hub, fordi det kan være med til at effektivisere udviklingsprocessen.
Læs mere:
Kontakt
Få hjælp nu
Find relevante, kvalitetssikrede kurser og efteruddannelse.