Het ene hulpmiddel dat elk homelab gemakkelijker te beheren maakt
Heb je mensen over Docker horen praten maar heb je geen idee wat het is of of je het nodig hebt? Docker is een fantastisch hulpmiddel dat wat mij betreft in elke homelab thuishoort—hier is wat Docker is, en waarom het het ene hulpmiddel is dat mijn homelab gemakkelijk te beheren maakt.
Wat is Docker?
Nee, het is niet de naam van een container
Docker is de naam van een platform waarop containers draaien. Het is zowel een commandoregeltool als een desktopinterface, afhankelijk van welke je het liefst gebruikt.
Docker is de industriestandaard geworden voor het uitvoeren van gecontaineriseerde apps in zowel homelabs als productieomgevingen. De Docker Hub, een repository van meer dan 10.000.000 (tien miljoen) publieke afbeeldingen, is ook een van de belangrijkste plaatsen om applicaties te verkrijgen die binnen Docker (of een andere containerbeheerder) kunnen draaien.
Docker is een van de bekendste containerbeheerders, wat het ook een van de best gedocumenteerde opties maakt om te gebruiken. Als je net begint met containers, zou ik sterk aanraden om Docker als instap te gebruiken; het is eenvoudiger en de community biedt veel ondersteuning.
Wat zijn containers, en zijn ze exclusief voor Docker?
Docker is populair, maar niet de enige speler in de stad
Docker hielp bij het oprichten van de Open Container Initiative, of OCI, die door veel andere platforms wordt gebruikt. Hoewel Docker zelf misschien niet volledig gratis en open source is, is de OCI die het heeft geholpen op te starten dat wel.
Voor degenen die Docker niet willen gebruiken, zijn er zeker andere OCI-compatibele platforms, waaronder Podman, Containerd + Nerdctl, Rancher Desktop, of zelfs LXC.
Sommige van deze programma's draaien op het Docker-subsysteem, en anderen gebruiken hun eigen implementatie van containers. Uiteindelijk draaien ze echter allemaal containers.
De gemakkelijkste manier om uit te leggen wat een container is, is door deze te zien als een applicatie. Elk containerimage is doorgaans ontworpen om één of twee taken uit te voeren, en dat is het. Je kunt je eigen images maken die meer doen, maar het wordt over het algemeen aangeraden om containers met één doel te gebruiken.
Elke container die je draait, heeft zowel blijvende opslag die wordt opgeslagen in een Docker-volume of in een map op je computer, als opslag die wordt verwijderd elke keer dat de container wordt bijgewerkt. Dit maakt containers in veel scenario's gemakkelijker te gebruiken dan dedicated applicaties, omdat je voorkeuren worden opgeslagen in een gemakkelijk te vinden bestand, en als je de container per ongeluk verwijdert, kun je deze opnieuw installeren en al je instellingen behouden zoals ze waren.
Hoe containers verschillen van virtuele machines
Vooraf geconfigureerd en ultralicht
Als je nog nooit van een container hebt gehoord of er een hebt gebruikt, is een van de beste manieren om het te beschrijven een lichte virtuele machine—maar het is geen virtuele machine.
Een container is een gecontaineriseerde miniatuurbesturingssysteem die op je computer draait en vooraf is geconfigureerd om de specifieke toepassing waarvoor het is gemaakt te draaien. Dit betekent dat je een container voor Plex kunt krijgen die gebaseerd is op de Arch Linux-afbeelding, maar het bevat alleen de noodzakelijke onderdelen van Arch om Plex te draaien en niets meer.
Containers kunnen ook gemakkelijk communiceren met je host-besturingssysteem, terwijl dat vaak moeilijker is voor virtuele machines. Bij containers verbind je vaak mappen of bestanden van de hostcomputer zodat de container ze kan lezen of zelfs lezen/schrijven. Vaak laat een container je iets als een interne /data- of /config-map koppelen aan een map op je computer. Hierdoor krijg je volledige toegang tot die bestanden, en dit is eigenlijk de reden waarom containers zo robuust zijn.
Nog maar laatst deed ik iets met mijn Docker-server waardoor meerdere containers uitvielen. Het enige wat ik hoefde te doen, was ze opnieuw opstarten en de gekoppelde mappen naar de mappen op mijn opslag wijzen, en de diensten draaiden weer alsof er nooit iets aan de hand was geweest.
Je allereerste container uitvoeren
Het is gemakkelijker dan je denkt
Het uitvoeren van een Docker-container is eigenlijk heel eenvoudig. Je hebt twee hoofdmanieren om een Docker-container uit te voeren: het docker run-commando, of via Docker Compose.
Ik ben in het verleden geen grote gebruiker van Docker Compose geweest, maar ik begin het steeds meer te gebruiken. Om het eenvoudig te houden, ga ik je laten zien hoe je docker run en Docker Compose kunt gebruiken, zodat je gemakkelijk een voorbeeld van beide kunt zien.
Begin met het installeren van Docker op je computer. Dit verschilt afhankelijk van welk besturingssysteem je gebruikt, maar zodra je het hebt geïnstalleerd, ben je klaar om je eerste container te implementeren.
Met Docker geïnstalleerd, ga naar je terminal en voer sudo docker run hello-world uit. Dit zou een output moeten geven die een bericht van Docker toont met de stappen die het heeft genomen om het te genereren.
Wat betreft Docker Compose, maak een heel eenvoudig docker-compose.yml-bestand met de volgende code en voer vervolgens docker compose up uit:
services:
hello:
image: hello-worldZolang je een uitvoer ziet die vergelijkbaar is met mijn screenshot hierboven, ben je klaar om verder te gaan naar de volgende stap in je Docker-reis!
Docker Compose kan je workflow vereenvoudigen
Kopieer een bestand, wijzig enkele regels, start je diensten
Ik heb je net laten zien hoe je zowel docker run als Docker Compose gebruikt, maar Docker Compose is eigenlijk wat je moet gebruiken als het al mogelijk is. Het is een eenvoudigere methode, vooral bij complexere implementaties.
Met Docker Compose kun je de tijd nemen om een enkel bestand te maken voor de Docker-container die je wilt starten. Het aanpassen van een Compose-bestand is ook heel eenvoudig. Bij een docker run-commando, als je een implementatie-instelling (omgevingsvariabele, poort, bind mount of iets anders) moet wijzigen, moet je de container stoppen, het docker run-commando herschrijven en opnieuw implementeren.
Met Docker Compose heb je het docker-compose.yml-bestand in een map waarvan je de container wilt draaien. Het bestand zelf is op elk moment gemakkelijk te wijzigen. Om de container te starten, gebruik je ofwel docker compose up om het één keer uit te voeren en weer te stoppen, of docker compose up -d als je wilt dat de container op de achtergrond draait. Als je wijzigingen aanbrengt in het Compose-bestand, voer dan opnieuw docker compose up -d uit en die wijzigingen worden nu toegepast.
Tenzij je een web-UI voor Docker gebruikt zoals Portainer (wat ik doe), is Docker Compose gewoon de gemakkelijkste manier om met Docker te werken. Je kunt eenvoudig wijzigingen aanbrengen in de instellingen van een container en deze opnieuw implementeren zonder te hoeven proberen te onthouden hoe je oorspronkelijke opdracht eruitzag.
Docker is een enorm waardevol hulpmiddel. Eigenlijk draait Docker mijn hele homelab. Ik zou de services die ik draai niet kunnen gebruiken zonder Docker.
Als je Docker nog niet eerder hebt gebruikt, probeer het dan eens. Het zal een revolutie teweegbrengen in hoe je diensten inzet en onderhoudt in je homelab (of productie)omgeving.





