Watchtower ARM Architecture Support

The containrrr/watchtower Docker image is a true multi-architecture image, meaning the same pull command works on x86 servers, Raspberry Pi, Apple Silicon Macs, and AWS Graviton — Docker's manifest list selects the correct architecture automatically.

ArchitectureSupported?Raspberry Pi Models
linux/amd64✓ Yesx86-64 servers / desktop (not Pi)
linux/arm64✓ YesPi 4 and Pi 5 with 64-bit OS
linux/arm/v7✓ YesPi 3, Pi 4 with 32-bit OS
linux/arm/v6⚠ LimitedPi Zero, Pi 1 (very limited RAM)

Prerequisites for Raspberry Pi

  • Raspberry Pi 4 or Pi 5 (recommended), Pi 3 also supported
  • Raspberry Pi OS (64-bit) or Ubuntu 22.04/24.04 for ARM
  • Docker installed (see below)
  • At least 1GB RAM on the Pi (Pi 4 2GB+ recommended if running many containers)

Install Docker on Raspberry Pi

# Official Docker install script (works on Pi OS and Ubuntu ARM)
curl -fsSL https://get.docker.com | sh

# Add pi user to docker group
sudo usermod -aG docker pi
# (Or replace 'pi' with your username)

# Log out and back in for group change to take effect
# Verify:
docker --version
docker run --rm hello-world

Install Watchtower on Raspberry Pi

Installation is identical to any Linux host — Docker automatically pulls the ARM image:

# Quick install (Docker Run)
docker run -d \
  --name watchtower \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /etc/localtime:/etc/localtime:ro \
  -e WATCHTOWER_CLEANUP=true \
  -e WATCHTOWER_POLL_INTERVAL=86400 \
  containrrr/watchtower

# Verify the correct architecture was pulled:
docker inspect watchtower | grep -i arch
# Should show: "Architecture": "arm64" or "arm"

Docker Compose on Raspberry Pi

# watchtower-compose.yml
version: "3.8"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime:ro
    environment:
      # Daily update at 3 AM (conserves Pi's SD card write cycles)
      - WATCHTOWER_SCHEDULE=0 0 3 * * *

      # Remove old images (important on Pi's limited storage)
      - WATCHTOWER_CLEANUP=true

      # Update one container at a time (gentler on Pi's limited RAM)
      - WATCHTOWER_ROLLING_RESTART=true

      # Notification (optional)
      - WATCHTOWER_NOTIFICATION_URL=telegram://TOKEN@telegram?channels=CHAT_ID
SD card tip: On Raspberry Pi, setting a daily update schedule (WATCHTOWER_SCHEDULE=0 0 3 * * *) rather than frequent polling is recommended. This reduces Docker's log writes to the SD card, extending its lifespan. If possible, run Pi OS from a USB SSD for better reliability.

Raspberry Pi-Specific Considerations

Memory Constraints

Watchtower itself uses very little memory — typically 15–30 MB RAM. However, pulling large Docker images on a Pi can temporarily spike memory usage. If your Pi has only 1GB RAM:

# Reduce simultaneous operations with rolling restart
- WATCHTOWER_ROLLING_RESTART=true

# Increase stop timeout to prevent force-kills on resource-constrained Pi
- WATCHTOWER_TIMEOUT=60s

ARM Image Availability Check

Not all Docker images on Docker Hub have ARM variants. Before running a container on Pi, verify ARM support:

# Check if an image supports your Pi's architecture:
docker manifest inspect myimage:latest | grep -A2 '"architecture"'

# Or simply try pulling — if no ARM image exists, you'll see:
# "no matching manifest for linux/arm64/v8 in the manifest list entries"

# Watchtower will log pull errors for images without ARM support
# but will continue updating all other containers normally

Common Pi Homelab Stack with Watchtower

version: "3.8"
services:
  # Pi-hole (DNS ad-blocking) — has ARM image
  pihole:
    image: pihole/pihole
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  # Home Assistant — has ARM image
  homeassistant:
    image: homeassistant/home-assistant
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  # Vaultwarden — has ARM image
  vaultwarden:
    image: vaultwarden/server
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  # Watchtower — manages all above
  watchtower:
    image: containrrr/watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_SCHEDULE=0 0 4 * * *

Troubleshooting on Raspberry Pi

Error: "exec format error"

# This means you pulled an x86 image on ARM (or vice versa)
# Fix: ensure the image has an ARM variant and re-pull
docker pull containrrr/watchtower  # Will auto-select ARM
docker inspect containrrr/watchtower | grep Architecture

Watchtower using too much CPU during checks

# Reduce check frequency — Pi doesn't need hourly checks
- WATCHTOWER_POLL_INTERVAL=86400   # Once per day
# OR use cron schedule for off-peak hours:
- WATCHTOWER_SCHEDULE=0 0 3 * * *  # 3 AM

Frequently Asked Questions

Does Watchtower support Raspberry Pi ARM architecture?

Yes. containrrr/watchtower publishes native multi-architecture images supporting linux/arm64 (Pi 4/5 with 64-bit OS) and linux/arm/v7 (Pi 3/4 with 32-bit OS). Docker automatically pulls the correct architecture — no special configuration needed.

Does Watchtower work on Raspberry Pi 4 and Pi 5?

Yes, both are fully supported. Use 64-bit Raspberry Pi OS or Ubuntu 22.04+ for ARM64 for the best experience. Watchtower uses under 30MB RAM, making it well-suited for Pi's constrained memory. Use WATCHTOWER_ROLLING_RESTART=true to avoid memory spikes during updates.

What if my Pi container doesn't have an ARM image?

If an image lacks an ARM variant, Docker will fail to pull it and Watchtower will log a pull error for that container — but it will continue updating all other containers normally. Check the Docker Hub image page for OS/Arch support before deploying on Pi. You can also exclude problematic containers: com.centurylinklabs.watchtower.enable=false.

JL
Jamie Lee
Homelab Engineer · Raspberry Pi Foundation community contributor
Jamie has run Docker on Raspberry Pi since the original Pi 3B+ and maintains a 5-Pi cluster for homelab experimentation. All Pi-specific recommendations in this guide are tested on Raspberry Pi 5 running 64-bit Raspberry Pi OS Bookworm with Docker Engine 26.x.