Udvikling af applikationer indebærer ofte håndtering af komplekse databaser, programmeringssprog, frameworks, afhængigheder og meget mere. Desuden kan du støde på kompatibilitetsproblemer, når du arbejder med forskellige operativsystemer (OS’er). Hver af disse variabler kan have en negativ indvirkning på din arbejdsgang.

For at løse disse problemer kan du begynde at bruge Docker. Dette værktøj gør det muligt for dig at bygge og administrere applikationer i containeriserede miljøer. I sidste ende kan Docker fjerne mange komplicerede konfigurationsopgaver og gøre udviklingen lettere og mere effektiv.

I dette indlæg besvarer vi spørgsmålet “Hvad er Docker?” og forklarer, hvordan det fungerer. Derefter viser vi dig nogle af de vigtigste anvendelsesmuligheder, og hvordan du som nybegynder kommer i gang. Lad os dykke ned i det!

Hvad er Docker?

Så hvad er Docker egentlig? Det er en open source-platform til udvikling af applikationer i en sandkasse. Dens lette virtualiserede miljøer er ellers kendt som containere:

Docker
Docker

Selv om containere har eksisteret siden 1979, har Docker gjort dem mere tilgængelige. Ved hjælp af Docker kan udviklere bygge, teste og implementere deres applikationer lokalt eller på en produktionsserver.

Siden udgivelsen af Docker 1.0 i 2014 har det standardiseret brugen af containere for både individuelle udviklere og virksomheder. Nu har den over 13 millioner brugere, herunder store virksomheder som Netflix, Target og Adobe:

Et skærmbillede af virksomheder, der bruger Docker
Virksomheder, der bruger Docker

Desuden stiger udbredelsen af Docker hvert år. Ifølge Datadog er næsten 25% af virksomhederne begyndt at bruge Docker til at overvåge deres applikationer. Siden 2015 er denne procentdel vokset med 3-5 procentpoint hvert år:

Et billede, der viser den stigende brug af Docker gennem årene
Virksomhedernes stigende brug af Docker (Kilde: Datadog)

Som vi kan se, er Docker blevet en populær platform til udvikling og implementering af applikationer. For yderligere at forstå dens popularitet skal vi dykke ned i, hvordan Docker-softwaren fungerer.

Docker vs. virtuelle maskiner

I Docker kan du pakke en applikation i en standardiseret enhed, som kan bruges til softwareudvikling. Denne enhed, eller container, indeholder applikationens kodning og afhængigheder, så den nemt kan køre på ethvert computermiljø.

Før Docker brugte virksomheder ofte virtuelle maskiner (Virtual Machines, VM’er) til at køre programmer. Disse kan emulere fysiske computere, så udviklere kan omdanne en server til flere servere. Denne tilgang kan dog have nogle ulemper.

Hver VM indeholder en komplet kopi af operativsystemet og programmet samt de nødvendige binære filer og biblioteker. Disse filer kan fylde titusindvis af GB på en computer. Desuden kan virtualisering af hardwaren til et gæstesystem kræve et betydeligt overhead.

I stedet for at virtualisere hardwaren virtualiserer containere operativsystemet. I Docker er containere abstraktioner i app-laget, som kan indeholde både kode og afhængigheder. På den samme maskine kan flere containere køre som isolerede processer:

Sammenligning af Docker og virtuelle maskiner
Sammenligning af Docker og virtuelle maskiner (Kilde: ResearchGate)

Som følge heraf optager Docker-containere typisk mindre plads. De kan også indeholde flere applikationer uden lige så mange virtuelle maskiner og operativsystemer.

Hvordan fungerer Docker?

Forestil dig, at du forsøger at sende fragt fra et sted til et andet. I den moderne tidsalder kan du nemt gøre dette med containere. Disse vil holde visse genstande sammen i et forseglet miljø, så de kan transporteres med skibe, tog eller fly.

Docker fungerer på en meget lignende måde. Kort sagt har Docker standardiseret metoden til udvikling og implementering af software.

Docker arbejder med containere. Disse kan have genanvendelige komponenter såsom Python, Node, afhængigheder og meget mere. Derefter kan du implementere containerne hvor som helst uden at bekymre dig om kompatibilitetsproblemer.

Docker kan være kompliceret i starten, så lad os diskutere alle de vigtigste komponenter, der er involveret i denne software. Når du forstår disse nøglefunktioner, vil du kunne strømline udviklingen af dine applikationer!

Docker-motor

Docker Engine er klient-server-teknologien til opbygning og containerisering af applikationer i Docker. Den understøtter i det væsentlige alle de opgaver, der er involveret i at køre din containerbaserede applikation:

Et Docker-billeddiagram
Et Docker-billeddiagram (Kilde: Docker)

Dette er de vigtigste komponenter i Docker-motoren:

  • Docker Daemon: Administrerer Docker-images, containere, netværk og mængder. Den lytter også til Docker API-forespørgsler og behandler dem.
  • Docker Engine REST API: En API udviklet af Docker, der interagerer med Daemon.
  • Docker CLI: Kommandolinjeinterface til kommunikation med Docker-Daemon.

Med Docker Engine kan du køre containeriserede applikationer på enhver infrastruktur. Denne opsætning bidrager til Dockers brancheførende container-køretid.

Docker-aftryk

Et Docker-image er en eksekverbar softwarepakke, der indeholder al kildekode, afhængigheder og værktøjer, der er nødvendige for at køre et program. Images er skrivebeskyttede skabeloner, der indeholder instruktioner til oprettelse af en container.

Du kan bedre forstå Docker-images ved at tænke på dem som blueprints. De indeholder øjebliksbilleder af, hvad en container vil indeholde, når den køres.

I et image er der flere stablede lag. Hvis du f.eks. ønsker at opbygge et webserver-image, kan du først inkludere Ubuntu Linux. Derefter kan du lægge Apache- og PHP-kodning ovenpå.

Når du laver et Docker-image, er det bedst at placere de mest variable lag højere oppe i stakken. Hvis du så har brug for at foretage en ændring, behøver du ikke at genopbygge hele imaget.

Docker-container

Som vi diskuterede tidligere, er containere vigtige dele af Docker. Kort sagt er en Docker-container et isoleret område, hvor et program kan køre uden at påvirke resten af systemet. Denne enhed af software pakker al kode og afhængigheder, så den nemt kan overføres fra et program til det næste.

Her er nogle af fordelene ved at bruge Docker-containere:

  • Standard: Selv om containere har eksisteret i årtier, har Docker skabt branchestandarden for deres anvendelse. Docker-containere er utroligt bærbare og nemme at bruge.
  • Letvægt: Da containere deler operativsystemets kerne, har du ikke brug for et andet operativsystem til hvert program. Som følge heraf kan din app køres mere effektivt og reducere server- og licensomkostningerne.
  • Sikker: I modsætning til VM’er isolerer containere applikationer, hvilket gør dem mere sikre. Med Docker vil dine containere have standardisolationsfunktioner.

I sidste ende giver Docker-containere flere fordele end VM’er. Selv om de isolerer og allokerer ressourcer på samme måde, er containere normalt mere bærbare, effektive og sikre.

Docker Compose

Docker Compose er et værktøj, der er designet til at køre flere containere som en enkelt tjeneste. Hvis din applikation kræver både NGINX og MySQL, kan du med Docker Compose oprette én fil, der starter begge containere. På den måde undgår du at skulle starte hver enkelt separat.

Her er de tre grundlæggende trin, når du bruger Docker Compose:

  1. Opret en Dockerfil for at definere applikationens miljø, så den kan reproduceres.
  2. Definer hver af applikationens tjenester i en docker-compose.yml-fil, så de kan køre i et isoleret miljø.
  3. Brug kommandoen Docker Compose til at starte og køre din applikation.

I det væsentlige gør Docker Compose det muligt at køre flere containere isoleret. De kan dog interagere med hinanden, når det er nødvendigt.

Compose kan f.eks. hjælpe dig med at oprette og konfigurere din applikations serviceafhængigheder, f.eks. databaser, caches eller webservice-API’er.

Dockerfile

En Dockerfile er et tekstdokument, der indeholder instruktioner til opbygning af Docker-images. Ved at læse denne fil vil Docker automatisk bygge nye images.

Kommandoen docker build opretter et image ud fra en Dockerfile og en kontekst. Denne kontekst er et sæt filer, der ligger i en angivet sti eller URL.

Indtast først følgende kommando:

docker build

Dette vil sende hele konteksten til Docker-deamon. Hvis du vil pege på en Dockerfil i dit filsystem, skal du bruge denne kommando:

docker build -f /path/to/a/Dockerfile

Hvis opbygningen er vellykket, kan du angive et repository og et tag, hvor du vil gemme det nye image:

docker build -t shykes/myapp

Derefter vil Docker-dæmonen udføre en validering af Dockerfilen. Hvis der er et problem med syntaksen, vil den returnere en fejl.

Docker Desktop

Hvis du vil begynde at bruge Docker på din Mac, Linux eller Windows, kan du installere Docker Desktop. Det giver en enkel og brugervenlig grænseflade til administration af containere, programmer og images på din personlige computer:

Docker Desktop
Docker Desktop

Med Docker Desktop behøver du ikke at bruge kommandolinjen til at udføre vigtige opgaver. Dette kan fremskynde udviklingsarbejdsgangen:

Et billede, der viser, hvordan Docker Desktop-dashboardet ser ud
Docker Desktop dashboard

Den leveres også med et indbygget udvidelsesmarked, der gør det nemt at begynde at bruge tredjepartsudviklerværktøjer. Disse omfatter software til fejlfinding, test og sikring af dine applikationer:

Docker Desktop Extensions Marketplace
Docker Desktop Extensions Marketplace

Desuden er Docker Desktop gratis til personlig brug og brug i små virksomheder. Husk dog på, at større virksomheder skal købe et abonnement, der starter ved 5 dollars om måneden.

Docker Hub

Docker Hub er en platform, hvor du kan finde og dele container images. Det er verdens største repository af containerimages med ressourcer fra fællesskabsudviklere, open source-projekter og uafhængige softwareleverandører (ISV):

Docker Hub images
Docker Hub images

Her er nogle af de funktioner, der er inkluderet i Docker Hub:

  • Repositorier til pushing og pulling af containerimages
  • Opret hold og organisationer med adgang til private repositories
  • Docker officielle billeder
  • Docker Verified Publisher-aftryk
  • Opret containerimages fra GitHub eller Bitbucket, og skub dem til Docker Hub
  • Udløs handlinger med webhooks

For at begynde at bruge Docker Hub skal du oprette dit første repository. Du skal blot navngive det og angive dets synlighed:

Opret et Docker Hub-repositorium
Opret et Docker Hub-repositorium

Derefter kan du downloade Docker Desktop og begynde at trække og skubbe containerimages fra Docker Hub. Du vil se disse pushes under det nyeste tag i dit nye repository.

Hvad bruges Docker til?

Docker er primært designet til DevOps og udviklere. Dette værktøj gør det muligt for udviklere at oprette, tilpasse og distribuere applikationer som bærbare og lette containere. Denne opsætning pakker alle sine afhængigheder i en enkelt enhed, som kan køres på stort set alle operativsystemer.

Her er en typisk brugssituation for Docker:

  1. Udviklere skriver kode lokalt og deler den derefter med deres teams ved hjælp af Docker-containere.
  2. De skubber applikationen til et testmiljø, hvor det er nemt at udføre automatiserede og manuelle tests.
  3. Når der findes fejl, løser udviklerne dem i udviklingsmiljøet. For at teste ændringerne gen-udruller de dem i testmiljøet.
  4. Når udviklerne har rettet fejlen, skubbes det opdaterede image til produktionsmiljøet.

Ved hjælp af denne arbejdsgang kan du afprøve ny software uden at foretage en manuel installation. Det kan f.eks. være svært og besværligt at opsætte en MySQL-server. I stedet kan du bruge Docker CLI til at udføre denne opgave med blot én kommando.

Da Docker har sin egen CLI, kan begyndere bruge den til at lære at betjene en kommandolinje. Når du har opsat Docker i et Linux-miljø, kan du begynde at bruge Linux-kommandoer. Derefter kan du udføre systemadministrative opgaver hurtigere og mere effektivt.

Hvis du desuden ønsker at begynde at udvikle lokale, offline WordPress-websteder, kan du bruge Docker til at installere DevKinsta. Vores udviklingspakke er Docker-baseret, hvilket gør det muligt for dig at oprette og administrere websteder som individuelle containere:

Et kig inde i DevKinstas containeriserede WordPress-websteder
DevKinsta’s containeriserede WordPress-websteder

Sammenlignet med andre lokale udviklingsværktøjer bruger DevKinsta færre ressourcer, mens den opretholder en næsten native ydeevne. Med et Docker-drevet DevKinsta-websted kan du udvikle WordPress hurtigt og sikkert. Desuden gør DevKinsta det lettere at sende testmails og udføre andre administrative opgaver.

Fordele og ulemper ved at bruge Docker

Nu hvor du forstår Dockers centrale komponenter, lad os diskutere de vigtigste fordele og ulemper. Derefter kan du beslutte, om det vil være nyttigt til administration af dine softwareapplikationer.

Fordele

Som udvikler kan noget af dit arbejde blive kedeligt og gentagende, når det udføres manuelt. Med Docker-containere kan du planlægge automatiseringen af disse opgaver. Ved at bruge cronjobs kan du reducere din arbejdsbyrde betydeligt og optimere din tid.

Desuden er Docker meget bærbar. Det gør det muligt for hvert medlem af dit udviklingsteam at arbejde på applikationer, selv med forskellige servere, maskiner eller operativsystemer. Denne opsætning kan eliminere mange af de problemer, der opstår som følge af platformsinkompatibilitet.

Sammenlignet med VM’er kan Docker-containere spare mere plads. Selv om Docker og VM’er fungerer på samme måde, er Docker meget mere letvægt.

Desuden har Docker et robust fællesskab. Ved at deltage i Docker-fællesskabsevents kan du møde og komme i kontakt med andre Docker-brugere både personligt og online:

Docker fællesskab homepage
Docker-fællesskab

Du vil også kunne gennemse Dockers omfattende fællesskabsfora. Hvis du er nybegynder, kan disse diskussioner hjælpe dig med at få råd om brugen af denne platform.

Ulemper

Som vi nævnte tidligere, kan Docker være mere effektiv end VM’er. Det er dog normalt betydeligt hurtigere at køre programmer på en fysisk server.

Docker kan også indebære en stejl indlæringskurve. Det er ikke designet til at køre applikationer med en grafisk brugergrænseflade (GUI). Det betyder, at du skal lære kommandolinjen, hvilket kan være en udfordring for nybegyndere.

Endelig vil Docker-containere køre på en hosts OS.Hostmaskinen kan blive kompromitteret, hvis der er skjult skadelig software i disse containere.

Sådan kommer du i gang med Docker

For at begynde at bruge Docker skal du besøge hovedwebstedet. Derefter skal du downloade den kompatible version til din computers operativsystem.

Hvis du har en Mac-computer, skal du vælge Docker-versionen til enten en Intel-chip eller en Apple-chip. Der er også muligheder for Windows- og Linux-brugere.

Når du åbner den downloadede fil, installerer den Docker Desktop på din computer. Herefter skal du åbne Docker Hub og oprette en ny konto:

Opret en konto på Docker
Opret en konto på Docker

Nu kan du åbne Docker Desktop og logge ind. Åbn derefter din kommandolinje eller dit bash-vindue, og kør denne kommando:

docker run -d -p 80:80 docker/getting-started

Når du har gjort dette, vil du se en ny container på dit Docker Desktop-dashboard. Dens navn vil blive genereret tilfældigt for din konto:

Generer en ny Docker container
Ny Docker-container

Du vil også have et nyt Docker-image. Hvis du navigerer til fanen Images, vil du se, at et docker/getting-started image er i brug:

Nyt Docker-image
Nyt Docker-image

Nu har du alt, hvad du behøver for at begynde at administrere dine lokale containere!

Opsummering

Hvis du skal administrere flere applikationer, kan Docker være et effektivt værktøj til at organisere dem uafhængigt af hinanden. Da Docker anvender containere, kan Docker hjælpe dig med at udvikle hver enkelt app uden risiko for modstridende programmeringssprog, biblioteker eller frameworks.

Selv om Docker ofte er mere effektiv end en virtuel maskine (Virtual Machine (VM)), kan det være hurtigere at arbejde på en fysisk server. Da den også er afhængig af en kommandolinjeinterface, er Docker måske heller ikke et godt valg for absolutte begyndere.

Som WordPress-udvikler har du sandsynligvis brug for at oprette lokale testmiljøer hurtigt. Ved hjælp af DevKinsta kan du bygge Docker-baserede WordPress-websteder. Derefter kan du begynde at udvikle temaer og plugins uden konflikter!