>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Hoe Docker Container Updates Automatiseren Zonder Complexe CI/CD Pipelines

Als je een thuisserver, NAS of een paar hobbyprojecten op een kleine VPS draait, heb je waarschijnlijk te maken met de updateroutine. Er komt een nieuwe release van een service uit, en je opent de terminal weer. Je moet de image pullen, de oude container stoppen, alle poorttoewijzingen, volumemounts en omgevingsvariabelen weer oproepen, en dan alles weer starten.

Wanneer je een dozijn containers hebt, kosten handmatige updates veel tijd. Het Watchtower-project biedt aan om dit probleem een keer en voor altijd op te lossen.

Wat Watchtower Doet

Watchtower is een kleine container die de andere draaiende services op je host monitort. Het controleert periodiek Docker Hub of je privéregister op nieuwe tags en werkt de applicatie automatisch bij.

Het werkingsprincipe is uiterst eenvoudig:

  1. Watchtower detecteert dat een bijgewerkte image naar het register is gepubliceerd.
  2. Het downloadt de nieuwe image naar de server.
  3. Het stopt de huidige container netjes.
  4. Het start een nieuwe container met exact dezelfde argumenten en configuratie als de oude.

Alle instellingen, inclusief gekoppelde directories, netwerken en omgevingsvariabelen, worden automatisch overgedragen naar het nieuwe exemplaar.

Snelle Start

De utility starten vereist slechts één terminalcommando:

$ docker run --detach \
    --name watchtower \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    nickfedor/watchtower

Het belangrijkste hier is het doorgeven van de Docker socket /var/run/docker.sock. Zo communiceert de utility met de Docker daemon op je machine en beheert andere containers.

Waar Te Gebruiken en Waar Te Vermijden

De projectontwikkelaars waarschuwen eerlijk in de documentatie: Watchtower is niet bedoeld voor productiegebruik in commerciële bedrijven.

Een container automatisch opnieuw starten rechtstreeks vanuit het register op een productieserver kan riskant zijn. In productieomgevingen is het beter om een complete CI/CD-pipeline met tests en canary-releases op te zetten, of Kubernetes te gebruiken met GitOps-tools zoals FluxCD.

Watchtower is echter ideaal voor de volgende scenario's:

  • Homelabs en mediaservers.
  • Lokale ontwikkelomgevingen.
  • Staging- of testomgevingen voor kleine projecten.

Technische Details en Architectuur

Het project is geschreven in Go. De utility ondersteunt de meest populaire CPU-architecturen: amd64, i386, armhf, arm64v8 en zelfs riscv64. Dit betekent dat je het kunt draaien op zowel een reguliere server als een Raspberry Pi.

Om te communiceren met de host gebruikt Watchtower Docker API versie 1.43 en hoger. Standaard onderhandelt de utility automatisch met de daemon over de vereiste API-versie, maar indien nodig kun je de versie handmatig instellen via de DOCKER_API_VERSION omgevingsvariabele.

Watchtower elimineert de noodzaak om handmatig commando's te verzamelen in notities en scripts. Als je het beu bent om thuisservices of lokale dev-containers handmatig bij te werken, duurt het deployen van de utility minder dan een minuut en bespaart het tijd bij elke release.

Gerelateerde projecten