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.

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.
| Begrep | Kort fortalt |
|---|---|
| Image | Skrivebeskyttet mal for applikasjonen, bygget fra en Dockerfile |
| Container | Kjørende instans startet fra et image |
| Dockerfile | Tekstfil som beskriver hvordan imaget skal bygges |
| Volume | Permanent dataområde som blir igjen selv om containeren slettes |
| Docker Hub | Offentlig register med ferdige images |
| Docker Compose | Verktø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.
wsl --install
# Start datamaskinen på nytt etter installasjonen, og kontroller deretter
wsl --statusDocker 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.
winget install -e --id Docker.DockerDesktopInstallere 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å.
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 dockerVerifisere 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.
docker --version
docker compose version
docker run hello-worldKjø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.
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 imagesPublisere 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.
docker run -d -p 8080:80 -v "$(pwd)":/usr/share/nginx/html:ro --name site nginxLage 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.
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]docker build -t uygulamam .
docker run -d -p 3000:3000 uygulamamFlere 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.
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:docker compose up -d
docker compose ps
docker compose logs -f
docker compose down
# Volume'larla birlikte sil (veriler gider)
docker compose down -vVanlige 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.


