← Tilbake til dokumentasjon
Middels

Installer Docker og Traefik på Ubuntu 26.04

Installer Docker Engine fra den offisielle pakkekilden og rut en testtjeneste gjennom Traefik med HTTPS.

dockertraefikreverse-proxycontaineressl

Denne veiledningen installerer Docker Engine og Compose-utvidelsen fra Dockers offisielle pakkekilde på Ubuntu 26.04 LTS. Deretter kjører den Traefik og en liten testtjeneste på et delt Docker-nettverk.

Forutsetninger

  • En Ubuntu 26.04-VPS med en sudo-bruker uten root-innlogging
  • En testet SSH-nøkkel og UFW som tillater OpenSSH
  • whoami.example.com som peker til VPS-en
  • TCP-port 80 og 443 tilgjengelig fra internett for HTTPS-validering

Docker advarer om at publiserte containerporter kan omgå UFW-regler. Publiser bare port 80 og 443 fra Traefik. Ikke publiser backendporter.

Installer Docker Engine

Fjern motstridende distribusjonspakker hvis de er installert, og legg til Dockers gjeldende apt-kilde:

sudo apt remove $(dpkg --get-selections docker.io docker-doc docker-compose docker-compose-v2 docker-buildx podman-docker containerd runc | cut -f1)
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run --rm hello-world
sudo docker compose version

Bruk sudo docker med mindre du bevisst har valgt en annen tilgangsmodell. Medlemskap i docker-gruppen gir rettigheter på root-nivå gjennom daemonen. Hvis du legger til en betrodd administrator med sudo usermod -aG docker BRUKERNAVN, må brukeren logge ut og inn før testen.

Konfigurer Traefik

sudo docker network create proxy
sudo install -d -m 0750 /opt/traefik/letsencrypt
sudo touch /opt/traefik/letsencrypt/acme.json
sudo chmod 600 /opt/traefik/letsencrypt/acme.json
sudo chown -R "$USER":"$USER" /opt/traefik
cd /opt/traefik

Opprett traefik.yml og bytt e-postadressen:

entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint: { to: websecure, scheme: https }
  websecure:
    address: :443

certificatesResolvers:
  letsencrypt:
    acme:
      email: admin@example.com
      storage: /letsencrypt/acme.json
      httpChallenge: { entryPoint: web }

providers:
  docker:
    exposedByDefault: false
    network: proxy

Opprett compose.yaml. Bytt vertsnavnet og fest gjennomgåtte imageversjoner før produksjonsbruk:

services:
  traefik:
    image: traefik:v3.5
    restart: unless-stopped
    security_opt: [no-new-privileges:true]
    ports: ["80:80", "443:443"]
    networks: [proxy]
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./letsencrypt:/letsencrypt

  whoami:
    image: traefik/whoami:v1.11
    restart: unless-stopped
    networks: [proxy]
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.example.com`)
      - traefik.http.routers.whoami.entrypoints=websecure
      - traefik.http.routers.whoami.tls.certresolver=letsencrypt
      - traefik.http.services.whoami.loadbalancer.server.port=80

networks:
  proxy:
    external: true

Docker-socketen gir Traefik tilgang til Docker-API-et. :ro gjør ikke Docker-API-et skrivebeskyttet. En kompromittert Traefik-container med sockettilgang kan kontrollere Docker-daemonen og verten. Hold proxyen oppdatert og begrens hvem som har tilgang til containeren og konfigurasjonen.

Start og kontroller

sudo docker compose config --quiet
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=100 traefik
curl --fail https://whoami.example.com
sudo ss -lntp

Bare SSH, port 80 og port 443 skal lytte offentlig i dette eksempelet. Kontroller at acme.json fortsatt har modus 600. Bruk sudo docker compose pull && sudo docker compose up -d i et planlagt vedlikeholdsvindu, og behold forrige image-referanse for rollback.

Se Docker-containere på VPS for valg av størrelse og driftsansvar utover dette oppsettet.

Kilder: Docker Engine på Ubuntu, Docker-tilgang etter installasjon, Docker og brannmur og Traefik Docker provider.