Nein, es geht weder um Bob Dylan noch Jimi Hendrix 🙂
Problem: Docker selbst hat kein self-management, d.h., wenn es ein neues Image gibt, kriegt Docker das erstmal nicht mit. Man muß selber pullen, um dann sowas zu kriegen:
root@big:~# docker pull collabora/code
Using default tag: latest
latest: Pulling from collabora/code
Digest: sha256:1b53e1119f92eb99e07186a8afdda9be1179fcefcbda415ed5b7b4087e7617a1
Status: Image is up to date for collabora/code:latest
docker.io/collabora/code:latest
root@big:~#
Außer Spesen nichts gewesen — das Image ist aktuell. Aber das weiß ich eben erst, wenn ich das docker pull
ausführe. Man könnte das per cron machen. Aber auch dann würde ein neues Image gepullt werden, aber es muß ja noch mehr gemacht werden dann: docker stop foobar && docker rm foobar && docker run foobar --with many arguments
Aber es geht auch eleganter — mit einem Container, der uns die Arbeit abnimmt: Watchtower. Ich kann bestätigen: der kümmert sich um alles — Download neuer Images, Restart des Containers. Auch sich selbst updatet er.
Zitat:
With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry.
Das verwende ich zwar nicht, hört sich aber geil an: ein neues Image in die Registry pushen (egal ob Dockerhub oder die eigene) — und der Container wird automatisch mit dem neuen Image neu gestartet.
Hab’ ich mir jetzt mehrere Wochen angesehen, funktioniert, wirklich!
Natürlich kann man das nur privat und nicht professionell einsetzen: es funktioniert einfach ohne jede weitere Interaktion, es gibt kein User-interface, von einer GUI ganz zu schweigen. Das ist natürlich nicht Enterprise, weil völlig schmerzfrei, aber für kleinere Hobby-Projekte mag es ja reichen…