Docker

Docker onderhouden: updates, back-ups en veiligheid

Docker draait vaak jarenlang zonder aandacht, tot er iets misgaat. Met deze gewoontes blijft je server netjes, veilig en terug te zetten.

Updates

Containers worden niet vanzelf bijgewerkt. Doe dit per programma, bijvoorbeeld eens per maand:

cd ~/programma
docker compose pull
docker compose up -d
docker image prune -f

De laatste regel ruimt oude, ongebruikte images op. Lees bij grote programma’s eerst de release-opmerkingen: soms is er een stap nodig bij een grote versiewissel. Dat is ook de reden om een versie vast te zetten (zoals :2) in plaats van latest.

Back-ups van je gegevens

Een container is vervangbaar, je gegevens niet. Bewaar daarom:

  • de map met je compose.yaml en .env;
  • de mappen die je aan containers koppelt (bind mounts);
  • de named volumes.

Een named volume bewaar je zo naar een bestand in de huidige map. Vervang mijn-volume:

docker run --rm -v mijn-volume:/data -v "$(pwd)":/backup alpine tar czf /backup/mijn-volume.tar.gz -C /data .

Stop een database eerst even voordat je zijn bestanden kopieert, of gebruik een export zoals mysqldump. Bewaar de back-up op een andere plek dan de server zelf. Hoe dat netjes werkt, lees je bij Proxmox-back-ups en in onze handleidingen over opslag.

Houd ruimte vrij

Oude images en logboeken groeien. Kijk eerst wat Docker gebruikt:

docker system df

En ruim ongebruikte spullen op. Let op: dit verwijdert gestopte containers, ongebruikte netwerken en images zonder container. Gegevens in volumes blijven staan, tenzij je --volumes toevoegt (doe dat niet).

docker system prune

Logboeken van containers kunnen groot worden. Beperk ze voor alle containers door /etc/docker/daemon.json aan te maken of aan te passen en daarna Docker te herstarten:

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}
sudo systemctl restart docker

Veiligheid

  • Zet geen poorten open die je niet nodig hebt. Wil je een dienst alleen op je eigen computer bereikbaar maken, schrijf dan "127.0.0.1:8080:80" in plaats van "8080:80".
  • Docker slaat je firewall vaak over. Een poort die je met ports: publiceert, is bereikbaar, ook als ufw hem blokkeert. Het veiligst is de poort niet publiceren of aan 127.0.0.1 binden.
  • Geef docker.sock zelden door. Wie erbij kan, beheert je hele server. Alleen nodig voor beheerprogramma’s zoals Portainer.
  • Draai als gewone gebruiker waar de image dat toestaat: user: "1000:1000" in je compose-bestand.
  • Gebruik geen onbekende images. Kies officiële of bekende bronnen en lees wat een image doet.
  • Werk Docker zelf ook bij met sudo apt update && sudo apt upgrade.

Handig om te weten

  • Met docker compose config controleer je je bestand en zie je wat Compose ervan maakt.
  • Wil je weten hoeveel geheugen en rekenkracht containers gebruiken? docker stats toont het live.
  • Draai je Docker in een LXC-container op Proxmox? Zet bij Options → Features Nesting aan. Veel mensen kiezen voor een VM, omdat dat stabieler is.
Lukt het niet zelf? Laat een expert bij je thuis langskomen via hulpaanhuis.nl