File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+
3+ # List of all your Swarm nodes
4+ NODES=(
5+ " docker-prod-manager1"
6+ " docker-prod-manager2"
7+ " docker-prod-manager3"
8+ " docker-prod-worker1"
9+ " docker-prod-worker2"
10+ " docker-prod-worker3"
11+ )
12+
13+ echo " === Docker Swarm Cluster Cleanup ==="
14+ echo " This script will connect to each node and prune unused images."
15+ echo " -------------------------------------"
16+
17+ # First, show disk usage before cleanup
18+ for NODE in " ${NODES[@]} " ; do
19+ echo " ---- $NODE : Disk usage before ----"
20+ ssh serveradmin@$NODE " sudo docker system df"
21+ done
22+
23+ # Then show which images will be removed (manual preview since there's no --dry-run)
24+ for NODE in " ${NODES[@]} " ; do
25+ echo " ---- $NODE : Dangling images preview ----"
26+ ssh serveradmin@$NODE " sudo docker images -f 'dangling=true'"
27+ done
28+
29+ read -rp " Proceed to prune unused images on all nodes? (y/N): " CONFIRM
30+ if [[ " $CONFIRM " != " y" && " $CONFIRM " != " Y" ]]; then
31+ echo " Aborted."
32+ exit 1
33+ fi
34+
35+ # Run actual prune
36+ for NODE in " ${NODES[@]} " ; do
37+ echo " ---- $NODE : Pruning unused images ----"
38+ ssh serveradmin@$NODE " sudo docker image prune -a -f"
39+ done
40+
41+ # Show disk usage after cleanup
42+ for NODE in " ${NODES[@]} " ; do
43+ echo " ---- $NODE : Disk usage after ----"
44+ ssh serveradmin@$NODE " sudo docker system df"
45+ done
46+
47+ echo " ✅ Done! All unused images have been cleaned up across the cluster."
You can’t perform that action at this time.
0 commit comments