31 lines
1.0 KiB
Bash
Executable File
31 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Removes unused Docker images, stopped containers, and dangling volumes.
|
|
# Runs every 2 hours via cron — see scripts/cronjobs.md for setup.
|
|
|
|
LOG_FILE="/tmp/docker-cleanup.log"
|
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
echo "[$TIMESTAMP] Starting Docker cleanup..." >> "$LOG_FILE"
|
|
|
|
# Remove stopped containers
|
|
CONTAINERS=$(docker container prune -f 2>&1)
|
|
echo "[$TIMESTAMP] Containers: $CONTAINERS" >> "$LOG_FILE"
|
|
|
|
# Remove dangling images (untagged layers with no container)
|
|
DANGLING=$(docker image prune -f 2>&1)
|
|
echo "[$TIMESTAMP] Dangling images: $DANGLING" >> "$LOG_FILE"
|
|
|
|
# Remove unused images (not referenced by any container)
|
|
IMAGES=$(docker image prune -a -f --filter "until=2h" 2>&1)
|
|
echo "[$TIMESTAMP] Unused images: $IMAGES" >> "$LOG_FILE"
|
|
|
|
# Remove unused volumes
|
|
VOLUMES=$(docker volume prune -f 2>&1)
|
|
echo "[$TIMESTAMP] Volumes: $VOLUMES" >> "$LOG_FILE"
|
|
|
|
# Remove unused networks
|
|
NETWORKS=$(docker network prune -f 2>&1)
|
|
echo "[$TIMESTAMP] Networks: $NETWORKS" >> "$LOG_FILE"
|
|
|
|
echo "[$TIMESTAMP] Cleanup complete." >> "$LOG_FILE"
|