Installasjonsguider

Installasjon av Docker og første container

Vi forklarer installasjon av Docker Desktop og Docker Engine, hvordan du kjører den første containeren, skriver en Dockerfile og setter opp et miljø med flere tjenester ved hjelp av docker compose.

Aurora YazılımRedaksjonen 6 min lesetid
Installasjon av Docker og første container
Hvordan installerer man Docker?

For Docker-installasjon på Windows og macOS laster du ned installasjonsprogrammet for Docker Desktop fra docker.com. På Windows må WSL 2 være aktivert først. På Linux installeres Docker Engine fra det offisielle repositoriet. Etter installasjonen kjører du kommandoen docker run hello-world. Hvis du ser velkomstmeldingen, fungerer Docker. For prosjekter med flere tjenester brukes docker compose.

Hva er Docker, og hva brukes det til?

Docker er en plattform som pakker en applikasjon sammen med alt den trenger, og kjører den i isolerte miljøer som kalles containere. Applikasjonen, bibliotekene og innstillingene samles i ett enkelt image, og dette imaget oppfører seg likt uansett hvor det kjøres.

I praksis betyr det at problemet «det fungerte på min maskin» i stor grad forsvinner. Utviklerens bærbare, testserveren og produksjonsserveren bruker samme image. Et nytt teammedlem får også prosjektet opp å kjøre med én kommando i stedet for timer med oppsett.

Containere ligner på virtuelle maskiner, men er mye lettere. Hver av dem har ikke et eget operativsystem, men deler kjernen til vertsmaskinen. Derfor starter de på sekunder og bruker få ressurser.

BegrepKort fortalt
ImageSkrivebeskyttet mal for applikasjonen, bygget fra en Dockerfile
ContainerKjørende instans startet fra et image
DockerfileTekstfil som beskriver hvordan imaget skal bygges
VolumePermanent dataområde som blir igjen selv om containeren slettes
Docker HubOffentlig register med ferdige images
Docker ComposeVerktøy som styrer flere containere med én fil

Krav før installasjon

Docker Desktop kjører et lite virtuelt miljø i bakgrunnen, og derfor må virtualiseringsstøtten på datamaskinen være slått på. På de fleste nye maskiner er den slått på som standard. Hvis ikke, må du aktivere Intel VT-x eller AMD-V i BIOS/UEFI-innstillingene.

På Windows kjører Docker Desktop Linux-containere på WSL 2. Hvis WSL ikke er installert, installerer du det først. Trinnene har vi forklart i detalj i guiden vår om installasjon av WSL.

  • Minne: Hvis flere containere skal kjøre samtidig, gir minst 8 GB RAM komfortabelt arbeid.
  • Diskplass: Images hoper seg opp over tid, så sett av noen titalls GB ledig plass.
  • Lisens: Docker Desktop er gratis for personlig bruk, utdanning og små bedrifter under en viss størrelse. Større organisasjoner trenger et betalt abonnement. Sjekk de gjeldende vilkårene på docker.com.
powershellInstallere WSL 2 (PowerShell som administrator)
wsl --install

# Start datamaskinen på nytt etter installasjonen, og kontroller deretter
wsl --status

Docker Desktop på Windows og macOS

Docker Desktop samler Docker Engine, kommandolinjeverktøyet, Docker Compose og et visuelt administrasjonspanel i én pakke. Last ned installasjonsprogrammet fra det offisielle nettstedet og installer med standardinnstillinger.

Kontroller at alternativet Use WSL 2 instead of Hyper-V er avkrysset under installasjonen på Windows. På macOS velger du versjonen som passer til prosessoren din: Apple Silicon (M-serien) eller Intel. Start programmet etter installasjonen. Når hvalikonet i menylinjen eller oppgavelinjen har stabilisert seg, er Docker klart.

powershellInstallere med winget på Windows
winget install -e --id Docker.DockerDesktop

Installere Docker Engine på Linux

På Linux kjører Docker direkte som Docker Engine, uten Docker Desktop, og det er også standardmetoden for servere. Den tryggeste veien er å følge oppsettet av distribusjonsspesifikt repositorium i den offisielle dokumentasjonen. For utviklingsmaskiner gjør Dockers offisielle bekvemmelighetsskript det samme i ett jafs.

Hvis du legger brukeren din til i docker-gruppen etter installasjonen, slipper du å skrive sudo foran hver kommando. Siden denne gruppen gir nesten root-rettigheter, bør du bare legge til brukere du stoler på.

bashOffisielt bekvemmelighetsskript (for utviklingsmiljø)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# for bruk uten sudo
sudo usermod -aG docker $USER
newgrp docker

# At tjenesten starter ved oppstart
sudo systemctl enable --now docker

Verifisere installasjonen

Uansett hvilket operativsystem du bruker, er verifiseringskommandoene de samme. Imaget hello-world lastes ned fra Docker Hub, kjøres, skriver en forklaring på skjermen og avsluttes. Hvis du ser denne utskriften, fungerer kjeden av klient, motor og nedlasting av image uten problemer.

bashVerifiseringskommandoer
docker --version
docker compose version
docker run hello-world

Kjøre den første containeren

La oss fortsette med et ekte eksempel: vi starter nginx, en lett webserver, som container og åpner den i nettleseren. Flagget -d kjører containeren i bakgrunnen, og -p 8080:80 kobler port 8080 på datamaskinen din til port 80 i containeren.

Etter at du har kjørt kommandoen, åpner du adressen http://localhost:8080 i nettleseren, og du skal se velkomstsiden til nginx. De andre kommandoene nedenfor lar deg overvåke containeren, gå inn i den og rydde opp.

bashnginx-container
docker run -d -p 8080:80 --name web nginx

# Kjørende containere
docker ps

# Følg loggene
docker logs web

# Åpne et skall inne i containeren
docker exec -it web sh

# Durdur ve sil
docker stop web
docker rm web

# Nedlastede images
docker images

Publisere dine egne filer

For å koble HTML-filer fra en mappe til containeren brukes bind mount. Kommandoen nedenfor kobler mappen du står i, skrivebeskyttet til nginx sin publiseringsmappe. Når du redigerer filen og laster siden på nytt, ser du endringen med en gang.

bash
docker run -d -p 8080:80 -v "$(pwd)":/usr/share/nginx/html:ro --name site nginx

Lage ditt eget image

For å gjøre en Node.js-applikasjon om til et image legger du en fil som heter Dockerfile i prosjektets rot. Å kopiere package-filene først og installere avhengighetene gjør at dette laget ikke bygges på nytt når koden endres, og det gjør byggingen raskere.

dockerfileDockerfile
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
bashBygge og kjøre
docker build -t uygulamam .
docker run -d -p 3000:3000 uygulamam

Flere tjenester med Docker Compose

Ekte prosjekter består som regel av flere deler: en webserver, en database og kanskje en hurtigbuffer. I stedet for å starte hver av dem med egne docker run-kommandoer definerer du alle i én compose.yaml-fil med Docker Compose.

Eksempelet nedenfor starter en nginx-webserver og en MariaDB-database sammen. Fordi databasefilene ligger i et navngitt volume, beholdes dataene selv om containeren slettes. Linjen version som ses i eldre eksempler, er ikke lenger nødvendig.

yamlcompose.yaml
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro
    depends_on:
      - db

  db:
    image: mariadb:lts
    environment:
      MARIADB_ROOT_PASSWORD: degistirin
      MARIADB_DATABASE: uygulama
    volumes:
      - db-veri:/var/lib/mysql

volumes:
  db-veri:
bashCompose-kommandoer
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down

# Volume'larla birlikte sil (veriler gider)
docker compose down -v

Vanlige feil og løsninger

Problemene som oppstår ved Docker-installasjon, handler for det meste om virtualisering, tillatelser og portkonflikter. Hvis images og stoppede containere fyller opp disken over tid, rydder docker system prune bort ubrukte ressurser. Kommandoen ber om bekreftelse før den sletter.

  • Feil med WSL 2 / virtualisering: Slå på virtualisering i BIOS, oppdater WSL med wsl --update, og start datamaskinen på nytt.
  • port is already allocated: Porten du har valgt, brukes av et annet program. Velg en annen port, som -p 8081:80, eller lukk programmet som står i veien.
  • permission denied ... docker.sock: På Linux er ikke brukeren din i docker-gruppen. Logg ut og inn igjen etter usermod-kommandoen.
  • Cannot connect to the Docker daemon: Docker Desktop er lukket, eller tjenesten kjører ikke på Linux. Start den med sudo systemctl start docker.
  • Advarsel om image-arkitektur på Mac: Noen images publiseres bare for x86. Velg en tag med ARM-støtte hvis mulig.

Hva gir Docker webprosjekter?

Docker sørger for at utviklings-, test- og produksjonsmiljøene til et webprosjekt er like. Å kjøre et prosjekt med PHP og database i containere, i stedet for i pakker på én maskin som XAMPP-installasjon, reduserer overraskelser som skyldes versjonsforskjeller. For å styre PHP-avhengigheter i containeren kan du også se guiden vår om Composer-installasjon.

Gjentakbare miljøer gjør det lettere for hastighets- og ytelsesforbedringer å gi det samme resultatet i produksjon. Denne konsistensen er ekstra viktig for integrerte løsninger der flere systemer jobber sammen, og for en voksende nettbutikkplattform.

For annet innhold om containere og servere kan du ta en titt på siden vår med Docker-taggen.

Vanlige spørsmål

01Hva er forskjellen på Docker og en virtuell maskin?

En virtuell maskin har sitt eget operativsystem, tar flere gigabyte plass og starter på minutter. En container deler kjernen til vertsmaskinen, kan holde seg på megabyte-nivå og starter på sekunder. Til gjengjeld er isolasjonen ikke like sterk som i en virtuell maskin.

02Kan man bruke Docker på Windows uten Docker Desktop?

Ja. Du kan installere Docker Engine direkte i en Linux-distribusjon i WSL 2. Denne metoden gir fleksibilitet når det gjelder lisens, men du gir avkall på bekvemmeligheter som det visuelle panelet og automatiske oppdateringer.

03Mister jeg dataene mine når containeren slettes?

Data som skrives inne i containeren, forsvinner når containeren slettes. Data som må bevares, for eksempel databasefiler, kobler du ut av containeren med volume eller bind mount. Husk at kommandoen docker compose down -v også sletter volumene.

04Brukes Docker på produksjonsservere?

Ja, mange applikasjoner kjører som containere i produksjon. Men sikkerhetskopiering, oppdatering, loggovervåking og sikkerhetsinnstillinger må planlegges separat i produksjonsmiljøet. Det er ikke nok med en nøyaktig kopi av oppsettet på utviklingsmaskinen.

Når du har installert Docker og kjørt den første containeren, har du gått over til en gjentakbar ordning der du kan få prosjektene dine opp å kjøre likt på hver maskin. Hvis du ønsker programvare tilpasset din bedrift som er utviklet og enkel å vedlikeholde i denne ordningen, kan du se skreddersydde programvareløsninger fra Aurora Yazılım, eller ta kontakt med oss.