Hopp til innhold

Docker som automatisering

Skip to content

Med Compose beskriver du ønsket oppsett i en fil og lar Docker opprette containerne. Her begynner du med en Nginx-webserver fra et ferdig image. Deretter kan du legge til en tjeneste og undersøke hva som opprettes automatisk.

Før du begynner: Docker Engine og Compose fra Docker Level 1 skal virke. Kjør docker compose version i Linux-VM-en. Du trenger ikke en Flask-app, Dockerfile eller GitHub-konto. YAML-oppslaget gir støtte til innrykk og lister; du kan lese det uten å ha laget en GitHub-workflow.

Gjør først «Oppgave 1» og kontroller websvaret. Oppdatering er et oppslag til senere arbeid. «Oppgave 2» lar deg prøve flere tjenester i samme prosjekt.

Hva er Docker Compose?

Med Docker Compose beskriver du én eller flere tjenester i en fil. I denne øvingen kjører hver tjeneste én container. Her brukes docker-compose.yml.

compose.yaml og docker-compose.yml er navn Compose støtter. Bruk ett av dem i prosjektmappen, og kjør kommandoene fra den mappen. Her brukes docker-compose.yml.

services:
  web:
    image: nginx:latest
    ports:
      - "127.0.0.1:8083:80"

Én kommando setter opp alt:

docker compose up -d

Compose-filen kan brukes på en annen server, men du må også flytte nødvendige data og lokale filer og sette opp passord, nettverk og andre innstillinger. Tagger som latest kan peke på et nytt image senere. Skal byggene være identiske, må du også låse hvilket image som brukes.

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 Beskriv ønsket oppsett i Compose-filen
Gjenta alt på neste server docker compose up -d

Compose-filen er en del av den tekniske dokumentasjonen og beskriver ønsket oppsett. Kontroller faktisk tilstand med docker compose ps og loggene. Begrunnelser, testresultater og rutiner for sikkerhetskopiering må dokumenteres i tillegg.

Les det lille eksemplet

services samler tjenestene. web er navnet vi gir webserveren. image velger et ferdig image, mens ports kobler port 8083 på VM-ens tilbakekoblingsadresse til port 80 i containeren. Derfor tester du fra VM-en selv. Bygging fra kildekode kommer i Docker Level 2.

Nyttige Docker-kommandoer

Kommando Hva den gjør
docker compose up -d Starter alle tjenester i bakgrunnen
docker compose down Stopper og fjerner prosjektets containere og nettverk
docker compose logs -f Følger loggene i sanntid
docker compose pull Henter images som prosjektets tagger peker på
docker compose restart Starter prosjektets containere på nytt, uten å bytte image
docker ps Viser kjørende containere

Når tjenesten trenger lagring

Bevar data utenfor containeren forklarer bind mount og navngitt volume. Nginx-øvelsen under trenger ingen database eller lagringskobling. Bruk lagringsstøtten før du utvider prosjektet med en tjeneste som må bevare data.

Oppdatering av tjenester

Å oppdatere en Docker-tjeneste er enkelt:

# Hent siste versjon
docker compose pull

# Restart med ny versjon
docker compose up -d

up -d tar i bruk det nye imaget ved å opprette containeren på nytt. Kontroller at tjenesten fungerer etter oppdateringen; en ny image-versjon kan kreve endringer i innstillinger eller data.

Easy Oppgave 1 - Sett opp Nginx med Docker Compose

Arbeid i VM-ens konsoll. Lag en ny mappe, slik at denne øvingen ikke endrer et annet Compose-prosjekt:

mkdir compose-ovelse
cd compose-ovelse
nano docker-compose.yml

Finnes mappen fra før, åpne den og kontroller innholdet før du fortsetter. Skriv Nginx-eksemplet fra «Hva er Docker Compose?» i filen. Lagre med Ctrl+O, bekreft med Enter og avslutt med Ctrl+X. Kontroller og start:

docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083

config --quiet skal avslutte uten feilmelding. Retter du en feil i filen, kjører du kontrollen på nytt før oppstart. ps skal vise web som kjørende, og curl skal vise Nginx-innhold med Welcome to nginx!.

Hvis porten er opptatt, velg en annen ledig vertsport i filen og bruk samme port i curl. Hvis containeren stopper, les docker compose logs web. Ikke start et nytt prosjekt i en tilfeldig mappe for å prøve igjen.

Forklar før du fortsetter: Hvilken fil beskriver tjenesten, og hva opprettet docker compose up -d? Stopp prosjektet med docker compose stop, start det igjen med docker compose up -d og gjenta curl-testen. Bruker du siden som Compose-støtte til en annen oppgave, kan du gå tilbake dit nå.

Medium Oppgave 2 - Legg til en tjeneste

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

Bruk et eget tjenestenavn under services, på samme innrykksnivå som web. Les tjenestens offisielle Docker-eksempel for nødvendig image, port og lagring. Bruk en ledig vertsport og begrens tilgang til øvingsmiljøet. En latest-tagg er ikke en låst versjon.

Kjør først docker compose config --quiet. Start så med docker compose up -d og se at begge tjenestene kjører samtidig. Bruker du tilbakekoblingsbinding som for Nginx, tester du porten fra VM-en; tilgang fra en annen maskin krever egen avklaring av adresse, port og nettverk.

Vis docker compose ps og et forventet svar fra hver tjeneste på den adressen og porten du faktisk har satt opp. Forklar muntlig eller skriftlig hva Compose oppretter automatisk, og hva du fortsatt må ordne selv, for eksempel data, innstillinger og sikkerhetskopiering. Hvis én tjeneste stopper, les docker compose logs før du endrer konfigurasjonen. Avslutt eventuell loggfølging med Ctrl+C.

Oppsummering

  • Docker Compose lar deg definere flere tjenester i én fil
  • Compose-filen er både konfigurasjon og dokumentasjon
  • Oppdatering er docker compose pull + docker compose up -d
  • Docker gjør det enkelt å flytte tjenester mellom servere

Kilder: Docker Compose: første prosjekt og Compose-tjenester.