Docker som automatisering

Skip to content

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.

Easy Oppgave 1 - Sett opp Nginx med Docker Compose

Lag en docker-compose.yml som kjører en Nginx-webserver:

  1. Lag en ny mappe og opprett filen docker-compose.yml
  2. Definer en tjeneste med image: nginx:latest på port 80
  3. Kjør docker compose up -d
  4. Besøk http://localhost i nettleseren

Medium Oppgave 2 - Legg til en tjeneste

Utvid docker-compose.yml fra oppgave 1 med en ekstra tjeneste. For eksempel:

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