Waarom Docker & Containers op Ubuntu 24.04 LTS?
Binnen een homelab is de verleiding groot om voor elke nieuwe service een aparte Proxmox LXC of VM aan te maken. Dit document legt uit waarom de overstap naar Docker binnen een dedicated VM de efficiΓ«ntie, flexibiliteit en het onderhoud van je homelab naar een hoger niveau tilt.
Opmerking: Deze gids is specifiek geschreven en geoptimaliseerd voor Ubuntu 24.04 LTS (Noble Numbat).
1. Wat lost Docker op? (De voordelen)
Wanneer je applicaties rechtstreeks op een Linux-systeem (of in losse LXC's) installeert, loop je snel tegen problemen aan met afhankelijkheden (dependencies). Applicatie A heeft bijvoorbeeld Python 3.9 nodig, maar Applicatie B vereist Python 3.11. Dit zorgt voor conflicten.
Docker lost dit op door de applicatie én alle benodigde softwarepakketten samen te voegen in één afgesloten pakketje: de container.
De belangrijkste voordelen:
- Lichtgewicht & Snel: Containers delen de kernel van de host-VM. Ze starten binnen milliseconden op en verbruiken een fractie van het RAM-geheugen in vergelijking met volwaardige VM's.
- Geen 'Dependency Hell': Elke container heeft zijn eigen geΓ―soleerde bibliotheken (libraries). Je kunt probleemloos verschillende versies van dezelfde software naast elkaar draaien.
- Consistentie: Een Docker-container draait overal exact hetzelfde. Of dit nu op je lokale pc, je Proxmox cluster of in de cloud is.
- Snel testen en weggooien: Wil je een nieuwe tool proberen? Je start de container op. Bevalt het niet? Je verwijdert de container en je basissysteem blijft 100% schoon achter zonder restbestanden.
2. Docker vs Proxmox LXC
Hoewel een Proxmox Linux Container (LXC) ook heel lichtgewicht is, zijn er grote verschillen met Docker:
| Eigenschap | Proxmox LXC | Docker Container |
|---|---|---|
| Doel | Volledig (mini) besturingssysteem | ΓΓ©n specifieke applicatie/proces |
| Beheer | Handmatig via apt, yum, etc. |
Geautomatiseerd via docker-compose.yml |
| Portabiliteit | Gebonden aan het Proxmox platform | Draait op elk OS waar Docker op staat |
| Ecosysteem | Beperkt tot OS templates | Miljoenen kant-en-klare apps op Docker Hub |
3. Waarom Docker binnen een Proxmox VM?
De ultieme opzet voor een stabiel homelab is het draaien van Docker bovenop een stabiele Linux VM (zoals Ubuntu Server 24.04) binnen Proxmox. Dit combineert de kracht van beide platformen:
- Beveiliging door isolatie: Een VM gebruikt hardware-virtualisatie. Mocht een Docker-container ooit gecompromitteerd worden door een hacker, dan kan deze hacker maximaal de Docker VM overnemen. De Proxmox-host en je fysieke netwerk blijven volledig afgeschermd.
- Probleemloos netwerken: Docker maakt intern intensief gebruik van netwerkregels (
iptables). Als je Docker in een LXC draait, kan dit zware conflicten veroorzaken met de netwerklagen van Proxmox zelf. Een volwaardige VM heeft hier geen last van. - Eenvoudig cluster-beheer: Je kunt de complete Docker VM live migreren tussen verschillende Proxmox-nodes, of in één keer back-uppen naar je Proxmox Backup Server (PBS).
4. Infrastructuur als Code (IaC)
Het grootste voordeel voor de homelabber is dat je je volledige serverinrichting kunt vastleggen in tekstbestanden (Docker Compose).
In plaats van urenlang commando's typen om een applicatie te installeren, beschrijf je de opzet één keer in een bestand. Als je server crasht, start je met dat ene tekstbestand je complete applicatielandschap binnen een minuut weer op.
Installatie van Docker op een schone Ubuntu 24.04 LTS
Volg deze specifieke stappen om de officiΓ«le Docker Engine correct te installeren op een kale installatie van Ubuntu 24.04 LTS.
Stap 1: Systeempakketten bijwerken
Stap 2: Vereiste pakketten installeren
Stap 3: Docker GPG-sleutel toevoegen
Opmerking: Sinds Ubuntu 24.04 is de oude apt-key methode volledig uitgefaseerd. We gebruiken hier de verplichte en veilige .asc sleutelarchitectuur.
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://docker.com -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Stap 4: OfficiΓ«le Ubuntu 24.04 Docker Repository instellen
echo \
"deb [arch=\$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://docker.com \
\((. /etc/os-release && echo "\)VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Stap 5: Docker Engine & Modern Compose installeren
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Stap 6: Docker zonder sudo uitvoeren (Groepsrechten)
Voeg je huidige gebruiker toe aan de docker-groep en activeer de rechten direct binnen deze terminalsessie met newgrp:
Stap 7: Installatie testen op Ubuntu 24.04
EssentiΓ«le CLI Commando's
Container Beheer
- Container starten (achtergrond):
docker run -d --name <naam> -p <host_poort>:<container_poort> <image> - Actieve containers bekijken:
docker ps - Alle containers bekijken (inclusief gestopte):
docker ps -a - Container stoppen:
docker stop <naam_of_id> - Container starten:
docker start <naam_of_id> - Container herstarten:
docker restart <naam_of_id> - Container verwijderen:
docker rm <naam_of_id> - Live logs inzien:
docker logs -f <naam_of_id>
Image Beheer
- Image handmatig downloaden:
docker pull <image_naam> - Gedownloade images bekijken:
docker images - Image verwijderen:
docker rmi <image_id>
Beheerprogramma's (Tools)
Docker-containers kunnen via verschillende interfaces worden beheerd:
| Programma | Type | Omschrijving |
|---|---|---|
| Portainer | Web GUI | Populaire en uitgebreide webinterface voor het visueel beheren van containers, volumes en stacks. |
| Dockge | Web GUI | Een minimalistische, supersnelle webinterface specifiek gericht op het beheren van docker-compose.yml bestanden. |
| Lazydocker | Terminal UI | Een krachtige terminal-gebaseerde interface (TUI) voor beheer rechtstreeks binnen je SSH-sessie. |
| Docker Compose | CLI Tool | De ingebouwde standaardtool om applicatie-stacks te beheren via duidelijke YAML-bestanden. |
Voorbeeld: Portainer installeren via CLI op Ubuntu 24.04
Opmerking: We slaan dit volume direct veilig op in de home-directory van de gebruiker.
mkdir -p ~/docker/portainer
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v ~/docker/portainer:/data portainer/portainer-ce:latest
https://<IP_VAN_VM>:9443
Onderhoud via de Commandline op Ubuntu 24.04
Regelmatig onderhoud voorkomt dat de harde schijf van je Ubuntu 24.04 Docker VM ongemerkt volloopt met oude data.
Schijfruimte controleren
Grondige schoonmaak (Prune)
Verwijder gestopte containers, ongebruikte netwerken en ongebruikte images (build caches) in één keer:
Specifiek opschonen
- Ongebruikte images verwijderen:
docker image prune -a -f - Gestopte containers verwijderen:
docker container prune -f - Ongebruikte volumes verwijderen:
docker volume prune -f
Updates Automatiseren
Optie A: Automatisch via Watchtower (Aanbevolen)
Watchtower controleer periodiek op nieuwe image-versies, haalt ze binnen en herstart de container vlekkeloos met behoud van je data.
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --interval 86400
--cleanup) om schijfruimte te besparen.
Optie B: Handmatig updaten via Docker Compose
Als je applicaties draait met Docker Compose, gebruik dan de volgende reeks commando's binnen de applicatiemap om handmatig updates uit te voeren:
# 1. Ga naar de map met je docker-compose.yml file
cd ~/docker/applicatie
# 2. Download de nieuwste images van internet
docker compose pull
# 3. Herstart de containers vlekkeloos met de nieuwe versies
docker compose up -d --remove-orphans
# 4. Ruim de oude, achtergebleven images direct op
docker image prune -f
Optie C: Ubuntu 24.04 Host VM OS Updates
Vergeet niet om het onderliggende Ubuntu 24.04 Linux-systeem ook periodiek bij te werken via de pakketbeheerder: