Independent guide & reference hub — not affiliated with containrrr or Nicholas Fedor

Docker Containers, Always Current. Zero Effort.

Watchtower automatically updates your Docker containers the moment a new image lands on Docker Hub — no cron jobs, no manual docker pull, full support for Docker Compose and Docker Swarm. This site is an independent, free guide to setting it up and configuring it.

Free & open source — includes a working config with notifications, scheduling & cleanup
$0 Free & Open Source
28+ In-Depth Guides
~2 min Typical Setup Time
Scroll to explore

Watchtower Docker — Automatic Container Updates, Explained

⚠️ December 2025 Update: The original containrrr/watchtower project was archived on December 17, 2025 (maintainers cited lost time/interest, not a security issue — details here). nickfedor/watchtower appears to be the most actively maintained fork, though it isn't an officially endorsed successor. All documentation below applies to both images — they are API-compatible.

Watchtower Docker is an open-source tool that automatically monitors your running Docker containers and updates them the moment a new image is available on Docker Hub or any private registry. Originally developed by the containrrr organization (containrrr/watchtower), it is now actively maintained as nickfedor/watchtower.

When Docker Watchtower is running, it connects to the Docker daemon via the Docker socket, polls your configured registries at a scheduled interval, and — when a newer image digest is detected — pulls the update, gracefully stops the old container, and restarts it with the exact same configuration. That is Watchtower for Docker in a single sentence: hands-free Docker container lifecycle management.

Whether you run a single Docker Compose stack on a VPS or a full Docker Swarm cluster, Watchtower keeps every container current without manual intervention — no cron jobs, no shell scripts, no downtime procedures.

Watches every Docker container

Monitors all running containers by default, or only containers you opt-in via Docker labels.

Pulls new Docker images automatically

Fetches the latest image from Docker Hub or any private registry on a configurable schedule.

Zero-downtime container restarts

Replaces old containers with updated ones — volumes, env vars, networks, and ports are all preserved.

Watchtower cleanup built-in

Set WATCHTOWER_CLEANUP=true to automatically remove old Docker images and free disk space.

Docker Hub New image digest detected
Watchtower containrrr/watchtower
nginx v1.25 → v1.27
app latest updated
redis v7.0 → v7.2
Old images removed (WATCHTOWER_CLEANUP=true)

What Watchtower actually does

Six real capabilities of the open-source tool — no dashboard, no SaaS layer, just a container that watches your other containers.

Automatic Image Updates

Watchtower polls Docker Hub or any private registry on a schedule you set, and pulls a new image the moment it detects a newer digest for a container you're running.

Compose & Swarm Native

Runs as a single container alongside your stack — works identically whether you're on plain docker run, Docker Compose, or a Swarm global service.

Flexible Scheduling

Use a 6-field cron expression via WATCHTOWER_SCHEDULE, or a simple poll interval via WATCHTOWER_POLL_INTERVAL — your call.

Zero-Downtime Restarts

Replaces the running container with the updated one, preserving volumes, environment variables, networks, and port mappings exactly as they were.

Notifications via Shoutrrr

Get notified on Slack, Discord, Telegram, email, or any generic webhook when Watchtower updates a container — powered by the Shoutrrr notification library.

04:00:01 [INFO] Found new nginx:1.27 image (a1b2c3d) 04:00:03 [INFO] Stopping /nginx 04:00:04 [INFO] Started new container /nginx

Automatic Cleanup

Set WATCHTOWER_CLEANUP=true and Watchtower removes the old image after a successful update, so disk usage doesn't creep up over time.

Up and running in under 5 minutes

Three simple steps — no dashboard signup, just a Docker image.

01

Install Watchtower on Docker

Run the Watchtower image with a single command — pulled directly from Docker Hub, no configuration files needed to get started. Supports Docker Compose and Docker Swarm out of the box. (containrrr/watchtower is archived but still runs; nickfedor/watchtower is the actively maintained fork — see our archive & migration guide.)

$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower
02

Set Up Docker Compose or Swarm

Use our Docker Compose example to add Watchtower as a service in your docker-compose.yml. Enable WATCHTOWER_CLEANUP=true to automatically remove old Docker images after each update. Works identically with Docker Swarm deployments.

03

Containers Stay Current — Automatically

Watchtower polls Docker Hub (or your private registry) on a configurable schedule, pulls the latest Docker image for each container, and performs a zero-downtime restart. Your infrastructure is always running the freshest code — no manual docker pull ever again.

Setup Watchtower Docker your way

Install Watchtower using Docker Run, a Docker Compose example, or deploy across a Docker Swarm cluster — examples below use containrrr/watchtower, swap in nickfedor/watchtower if you want the actively maintained fork.

Install Watchtower with Docker Run

The fastest way to get started. This single command pulls the official containrrr/watchtower Docker image from Docker Hub and starts monitoring all running containers. Watchtower will poll for new images every 24 hours by default and perform a graceful restart when updates are found.

  • Pulls from Docker Hub automatically
  • Monitors all running Docker containers
  • Zero-downtime rolling restarts
Terminal
docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower

Watchtower Docker Compose Example

Add Watchtower as a service inside your existing docker-compose.yml. Setting WATCHTOWER_CLEANUP=true tells Watchtower to automatically remove old Docker images after each container update — keeping your host clean and freeing disk space. Adjust WATCHTOWER_POLL_INTERVAL (in seconds) to control how often Watchtower checks Docker Hub.

  • Watchtower cleanup Docker Compose ready
  • Configurable polling interval
  • Auto-removes old Docker images
Download docker-compose.yml
docker-compose.yml
version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_POLL_INTERVAL=300
      - WATCHTOWER_NOTIFICATIONS=slack
      - WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://hooks.slack.com/...

Watchtower Docker Swarm Deployment

Deploy Watchtower across an entire Docker Swarm cluster with one command. Running as a global service ensures every node in your Swarm automatically keeps its containers updated from Docker Hub — no per-node configuration required. Ideal for production multi-host environments.

  • Runs on every Swarm node automatically
  • Mounts Docker socket via bind mount
  • Production-ready multi-host support
Terminal — Swarm Manager
docker service create \
  --name watchtower \
  --mode global \
  --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
  --env WATCHTOWER_CLEANUP=true \
  containrrr/watchtower

Watchtower vs What's Up Docker — and every other option

Looking for a Watchtower Docker alternative or replacement? Here's how Watchtower stacks up against What's Up Docker, Portainer, and manual workflows.

Feature
Watchtower Auto-updates (not just notify)
What's Up Docker Portainer Manual Updates
Auto-update Docker containers ✓ Full ◑ Notify only ◑ Manual trigger ✗ None
Docker Compose support ✓ Native ✓ Yes ✓ Yes ✗ Manual
Docker Swarm support ✓ Native ✗ Limited ✓ Yes ✗ None
Watchtower cleanup (old images) WATCHTOWER_CLEANUP=true ✗ No ◑ Manual ✗ No
Notifications (Slack, Discord, email, webhook via Shoutrrr) ✓ Yes ✓ Yes ◑ Limited ✗ No
Web UI / dashboard ✗ CLI/logs only ◑ Basic ✓ Yes ✗ No
Private registry support ✓ Yes ✓ Yes ✓ Yes ◑ Manual
Setup time ✓ < 5 minutes ◑ ~15 minutes ◑ ~30 minutes ✗ Ongoing
Free tier ✓ Yes — forever ✓ Open source ◑ Community edition ✓ Free (your time)

Watchtower vs. What's Up Docker

What's Up Docker is a solid notification tool — but by default it only tells you about new images, it doesn't pull and restart them for you. Watchtower does the full loop automatically: detect, pull, restart, and optionally clean up old images. The tradeoff is that Watchtower has no web dashboard — it's configuration- and log-driven, not something you click around in.

Watchtower Docker Guides & Docs

Complete documentation for every Watchtower Docker use case — from first install to advanced multi-host deployments.

Everything you need to know

What is Watchtower Docker?

Watchtower Docker is an open-source container automation tool that monitors running Docker containers and automatically updates them when newer images are available on Docker Hub or a private registry. It is developed by the containrrr organization and distributed as containrrr/watchtower on Docker Hub. Watchtower connects to the Docker daemon, polls container registries on a schedule, pulls updated images, and gracefully restarts containers — preserving all volumes, environment variables, and network settings.

What is Watchtower for Docker and what does it do?

Watchtower for Docker is a container lifecycle manager that automates Docker image updates. When a new image tag or digest is detected, Watchtower: (1) pulls the updated Docker image from Docker Hub or your registry; (2) stops the running container gracefully; (3) starts a new container using the updated image with the same runtime parameters; and (4) optionally removes the old image (WATCHTOWER_CLEANUP=true). It can send notifications via Slack, email, or webhooks and can be scoped to specific containers using Docker labels.

How does Watchtower update Docker containers?

Watchtower updates Docker containers in four automatic steps: it polls your container registry for a newer image digest; pulls the new Docker image when detected; gracefully stops the existing container with a configurable stop timeout; then starts a replacement container using the updated image while preserving all original parameters — volumes, env vars, ports, networks, labels, and restart policy. The process typically completes in seconds with no manual commands required.

What is Watchtower in Docker Compose?

In Docker Compose, Watchtower is added as an additional service inside your docker-compose.yml. It runs alongside your application containers, mounts the Docker socket, and automatically updates every other service in the Compose stack. You configure it with environment variables such as WATCHTOWER_CLEANUP=true, WATCHTOWER_POLL_INTERVAL, and WATCHTOWER_NOTIFICATIONS. This is the most common production deployment pattern for Watchtower Docker Compose setups.

What is the purpose of Watchtower Docker?

The purpose of Watchtower Docker is to eliminate the manual work of keeping Docker containers up to date. Without Watchtower, keeping containers current requires logging into each host, running docker pull, stopping the old container, and restarting with the new image — repeated for every container, every time. Watchtower fully automates this cycle, ensuring every Docker container always runs the latest image version with zero human intervention. It is especially valuable in homelab setups, self-hosted application stacks, and small-to-medium production environments.

How quickly can I get started?

Most people are up and running in under 5 minutes: pull the image, mount the Docker socket, and Watchtower starts monitoring your containers immediately with sane defaults (24-hour poll interval). No signup, no agent installer, no dashboard to configure — see the install section above for copy-paste commands.

Does Watchtower support Kubernetes?

No. Watchtower talks directly to the Docker Engine socket and has no Kubernetes support — pods, Deployments, and Helm charts are out of scope. If you're on Kubernetes and want automated image updates, look at Keel or Flux/ArgoCD image-update automation instead.

Does Watchtower work with private registries?

Yes. Watchtower reads the same Docker credential store your host already uses, so if docker pull works against your private registry, Watchtower can poll it too. See our environment variables reference for registry auth options.

Is it safe to give Watchtower access to the Docker socket?

Mounting /var/run/docker.sock gives a container effective root access to the host — that's true of Watchtower or any tool that needs it. Use the official image, pin a specific version instead of :latest, and review the source before running it in a sensitive environment, same as you would for any image with socket access.

Does Watchtower have a web dashboard?

No — Watchtower is configuration- and log-driven, with an optional HTTP API for triggering updates on demand. If you want a clickable UI for container management alongside auto-updates, pair it with Portainer.

What is the containrrr/watchtower Docker image?

containrrr/watchtower is the official Watchtower Docker image hosted on Docker Hub. It is maintained by the containrrr organization and is the standard way to install Watchtower on any Docker host. You can pull it with docker pull containrrr/watchtower or reference it directly in your Docker Compose file.

How does watchtower cleanup work in Docker Compose?

Set the environment variable WATCHTOWER_CLEANUP=true in your Docker Compose file. When Watchtower updates a container, it will automatically remove the old Docker image from the host after the new one is running — preventing disk space from filling up over time. This is one of the most popular configuration options for production Docker Compose deployments.

Does Watchtower support Docker Swarm?

Yes. Watchtower runs natively on Docker Swarm. Deploy it as a global service so it runs on every Swarm node and keeps all containers up to date cluster-wide. Mount the Docker socket via bind mount and set WATCHTOWER_CLEANUP=true to keep your Swarm nodes clean automatically.

Is Watchtower a good replacement for What's Up Docker?

Watchtower goes far beyond What's Up Docker. While What's Up Docker is a Watchtower alternative focused purely on sending notifications about available image updates, Watchtower actually performs the updates — pulling the new Docker image from Docker Hub, stopping the old container, and restarting with the updated image. Watchtower is the more complete Docker container management solution for teams who want automation, not just alerts.

How do I use Watchtower with a private Docker registry?

Mount your Docker config file (~/.docker/config.json) into the Watchtower container and it will automatically use your registry credentials. This works for AWS ECR, Google Container Registry, GitHub Container Registry, and any private Docker registry. No extra configuration needed — Watchtower reads the standard Docker authentication file.

How do I install Watchtower Docker on any host?

The fastest way to install Watchtower Docker is a single docker run command: docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -e WATCHTOWER_CLEANUP=true containrrr/watchtower. This pulls the official containrrr/watchtower image and starts monitoring all running containers immediately. For Docker Compose, add Watchtower as a service in your docker-compose.yml. Watchtower works identically on Linux, macOS Docker Desktop, Windows Docker Desktop, Synology, Unraid, Proxmox, Raspberry Pi, and TrueNAS SCALE.

How do I use Watchtower Docker — basic how-to?

Using Watchtower Docker is three steps: (1) Run Watchtower alongside your existing containers, mounting the Docker socket; (2) Configure your update schedule via WATCHTOWER_POLL_INTERVAL (seconds) or WATCHTOWER_SCHEDULE (6-field cron); (3) Optionally set WATCHTOWER_CLEANUP=true and a notification URL. Watchtower runs silently in the background from that point — every container on the host is checked and updated automatically. Check docker logs watchtower to see what it's doing.

Is Watchtower Docker still maintained in 2026?

The original containrrr/watchtower project was archived on December 17, 2025. The GitHub repository is now read-only — no new releases, bug fixes, or security patches will be issued by the containrrr organization. The existing image still works for current Docker versions, but running an unmaintained image carries long-term risk as the Docker API evolves.

The actively maintained replacement is nickfedor/watchtower (also published as nicholas-fedor/watchtower), a community fork maintained by Nicholas Fedor with full API compatibility and continued releases. If you are starting a new deployment or want continued security support, migrate to the nickfedor fork. See also: What happened to Watchtower and what to do next.

Is Watchtower Docker safe to use in production?

Watchtower Docker is widely used in production environments, but with a few considerations: (1) It requires the Docker socket mount, which is equivalent to root access on the host — use a socket proxy for hardened environments; (2) Auto-updates can introduce breaking changes from upstream images — use label-based opt-in (WATCHTOWER_LABEL_ENABLE=true) for critical services; (3) For databases (PostgreSQL, MySQL), always exclude them from auto-updates. For homelab, self-hosted apps, and non-critical production services, Watchtower with WATCHTOWER_CLEANUP=true and daily scheduling is the recommended approach.

Ready to put your containers on autopilot?

Watchtower is free and open source. Grab a working Compose file and you're running in minutes.

No signup, no account, no cost — it's just a Docker image