Installer Docker og Traefik på Ubuntu 26.04
Installer Docker Engine fra den offisielle pakkekilden og rut en testtjeneste gjennom Traefik med HTTPS.
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.comsom 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.