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.
| Architecture | Supported? | Raspberry Pi Models |
|---|---|---|
linux/amd64 | ✓ Yes | x86-64 servers / desktop (not Pi) |
linux/arm64 | ✓ Yes | Pi 4 and Pi 5 with 64-bit OS |
linux/arm/v7 | ✓ Yes | Pi 3, Pi 4 with 32-bit OS |
linux/arm/v6 | ⚠ Limited | Pi 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
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
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.
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.
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.