Docker forenkler utrulling av applikasjoner. I stedet for å installere og konfigurere programvare manuelt på en server, definerer du alt i konfigurasjonsfiler. Resultatet er reproduserbart, portabelt og raskt å sette opp.
Ny på Docker?
🐳 Docker - Kom i gang og 🐳 Docker - Dockerfile og Compose introduserer image, container og enkel Compose – dette nivået bygger videre på det med flere tjenester og volumes.
Virtual Machines vs Containers – PowerCert (8:57)
Se video på YouTube – skiller lagene fra fysisk vert til hypervisor til VM eller container og videre til selve tjenesten, nyttig bakgrunn før du fortsetter her.
Hva er Docker Compose?
Med Docker Compose definerer du flere tjenester i én fil (docker-compose.yml). Hver tjeneste er en container med sin egen konfigurasjon.
services:
web:
image: nginx:latest
ports:
- "80:80"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
Én kommando setter opp alt:
docker compose up -d
Trenger du å flytte tjenesten til en annen server? Kopier filen og kjør samme kommando. Alt er identisk.
Hvorfor er dette automatisering?
Tenk på forskjellen:
| Manuelt oppsett | Med Docker Compose |
|---|---|
| Installer Nginx manuelt | image: nginx:latest |
| Konfigurer porter | ports: "80:80" |
| Installer Grafana manuelt | image: grafana/grafana:latest |
| Dokumenter alle stegene | Alt er dokumentert i .yml-filen |
| Gjenta alt på neste server | docker compose up -d |
Docker Compose-filen er dokumentasjonen. Den beskriver nøyaktig hvilke tjenester som kjører, hvilke porter de bruker og hvordan de er konfigurert.
Nyttige Docker-kommandoer
| Kommando | Hva den gjør |
|---|---|
docker compose up -d | Starter alle tjenester i bakgrunnen |
docker compose down | Stopper og fjerner alle containere |
docker compose logs -f | Følger loggene i sanntid |
docker compose pull | Henter siste versjon av alle images |
docker compose restart | Restarter alle tjenester |
docker ps | Viser kjørende containere |
Volumes: Lagre data utenfor containeren
Containere er midlertidige. Hvis du sletter en container, forsvinner alt innholdet. For å beholde data bruker vi volumes:
services:
database:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: hemmelig
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Her lagres databasefilene i et volume kalt db-data. Selv om du sletter og oppretter containeren på nytt, er dataene fortsatt der.
Oppdatering av tjenester
Å oppdatere en Docker-tjeneste er enkelt:
# Hent siste versjon
docker compose pull
# Restart med ny versjon
docker compose up -d
Sammenlign dette med å oppdatere manuelt installert programvare, der du kanskje må laste ned, konfigurere, og håpe at ingenting går i stykker.
Oppgave 1 - Sett opp Nginx med Docker Compose
Lag en docker-compose.yml som kjører en Nginx-webserver:
- Lag en ny mappe og opprett filen
docker-compose.yml - Definer en tjeneste med
image: nginx:latestpå port 80 - Kjør
docker compose up -d - Besøk
http://localhosti nettleseren
Oppgave 2 - Legg til en tjeneste
Utvid docker-compose.yml fra oppgave 1 med en ekstra tjeneste. For eksempel:
- Uptime Kuma på port 3001
- Grafana på port 3000
Start alt med docker compose up -d og se at begge tjenestene kjører samtidig.
Oppsummering
- Docker Compose lar deg definere flere tjenester i én fil
- Compose-filen er både konfigurasjon og dokumentasjon
- Volumes lagrer data utenfor containeren slik at den overlever restarter
- Oppdatering er
docker compose pull+docker compose up -d - Docker gjør det enkelt å flytte tjenester mellom servere