Skip to content

Commit 7ca9ac0

Browse files
authored
Added docker swarm cleanup_unused_images script
1 parent 45fe6b3 commit 7ca9ac0

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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."

0 commit comments

Comments
 (0)