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.
Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. Run the watchtower container with the following command:
$ docker run --detach \
--name watchtower \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
Watchtower is intended to be used in homelabs, media centers, local dev environments, and similar. We do not recommend using Watchtower in a commercial or production environment. If that is you, you should be looking into using Kubernetes. If that feels like too big a step for you, please look into solutions like MicroK8s and k3s that take away a lot of the toil of running a Kubernetes cluster.
If Watchtower crashes with a "client version is too old" error, your Docker Engine likely doesn't support the API version that Watchtower defaults to (1.44). This is common on systems running older Docker versions, such as Synology NAS devices.
Set the DOCKER_API_VERSION environment variable to match your Docker Engine's supported API version:
$ docker run -d --restart=always \
--name watchtower \
-e DOCKER_API_VERSION=1.43 \
-v /var/run/docker.sock:/var/run/docker.sock \
storjlabs/watchtower \
--stop-timeout 300s
You can check your Docker Engine's API version with docker version.
The full documentation is available at https://containrrr.dev/watchtower.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
