#!/bin/bash # Docker 清理脚本 # 用于清理未使用的Docker资源 echo "🧹 开始清理Docker资源..." # 1. 清理停止的容器 echo "📋 清理停止的容器..." stopped_containers=$(docker ps -a --filter "status=exited" -q) if [ ! -z "$stopped_containers" ]; then echo "发现停止的容器: $stopped_containers" docker rm $stopped_containers echo "✅ 已清理停止的容器" else echo "✅ 没有停止的容器需要清理" fi # 2. 清理悬空镜像 echo "📋 清理悬空镜像..." dangling_images=$(docker images --filter "dangling=true" -q) if [ ! -z "$dangling_images" ]; then echo "发现悬空镜像: $dangling_images" docker rmi $dangling_images echo "✅ 已清理悬空镜像" else echo "✅ 没有悬空镜像需要清理" fi # 3. 清理未使用的卷 echo "📋 清理未使用的卷..." unused_volumes=$(docker volume ls --filter "dangling=true" -q) if [ ! -z "$unused_volumes" ]; then echo "发现未使用的卷: $unused_volumes" docker volume rm $unused_volumes echo "✅ 已清理未使用的卷" else echo "✅ 没有未使用的卷需要清理" fi # 4. 清理未使用的网络 echo "📋 清理未使用的网络..." unused_networks=$(docker network ls --filter "dangling=true" -q) if [ ! -z "$unused_networks" ]; then echo "发现未使用的网络: $unused_networks" docker network rm $unused_networks echo "✅ 已清理未使用的网络" else echo "✅ 没有未使用的网络需要清理" fi # 5. 显示当前状态 echo "📊 当前Docker状态:" echo "运行中的容器:" docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" echo -e "\nDocker卷:" docker volume ls echo -e "\nDocker网络:" docker network ls echo "🎉 Docker清理完成!"