Docker 镜像管理指南 🐳

📦 掌握 Docker 镜像的查看、清理和优化技巧,释放磁盘空间,提升容器效率
📋 目录导航
🔍 镜像查看命令
👀 查看本地镜像列表
1 2 3 4 5 6 7 8 9 10 11
| docker images
docker images -a
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"
docker images --sort=created
|
🔎 镜像筛选与搜索
1 2 3 4 5 6 7 8 9 10 11
| docker images ubuntu
docker images --filter "reference=nginx:*"
docker images --filter "label=version=latest"
docker images --filter "dangling=true"
|
🗑️ 镜像删除操作
❌ 删除单个镜像
1 2 3 4 5 6 7 8 9 10 11
| docker rmi abcdef123456
docker rmi nginx:latest
docker rmi -f nginx:latest
docker rmi redis:alpine mysql:8.0
|
🧹 批量删除操作
1 2 3 4 5 6 7 8 9 10 11
| docker image prune
docker image prune -f
docker image prune -a
docker image prune -af
|
📊 空间管理
💾 查看磁盘使用情况
1 2 3 4 5 6 7 8
| docker system df
docker system df -v
watch -n 5 docker system df
|
📈 磁盘使用报告解读
类型(TYPE) |
总数(TOTAL) |
活动数(ACTIVE) |
占用空间(SIZE) |
可回收空间(RECLAIMABLE) |
🖼️ Images(镜像) |
28 |
17 |
10.71GB |
4.376GB (40%) |
🐳 Containers(容器) |
17 |
17 |
569MB |
0B (0%) |
💾 Local Volumes(本地卷) |
3 |
0 |
0B |
0B |
🔨 Build Cache(构建缓存) |
0 |
0 |
0B |
0B |
📉 空间分析命令
1 2 3 4 5 6 7 8
| docker images --format "table {{.Size}}\t{{.Repository}}" | sort -hr
docker system df -v | grep -A 10 "Images space usage:"
docker images -q | xargs docker inspect --format='{{.Size}}' | awk '{sum+=$1} END {print sum/1024/1024" MB"}'
|
🧹 清理与优化
🗂️ 系统级清理
1 2 3 4 5 6 7 8
| docker system prune
docker system prune -f
docker system prune --volumes -f
|
⏰ 定时清理任务
1 2 3 4 5 6 7 8 9 10 11
|
echo "$(date): Starting Docker cleanup" >> /var/log/docker-cleanup.log docker image prune -af >> /var/log/docker-cleanup.log 2>&1 docker system prune -f >> /var/log/docker-cleanup.log 2>&1 echo "$(date): Cleanup completed" >> /var/log/docker-cleanup.log
|
📝 日志管理
📋 清理日志记录
1 2 3 4
| mkdir -pm 755 /mnt/docker-rmi-log && \ docker image prune --force --filter "dangling=true" > \ "/mnt/docker-rmi-log/$(date +'%Y-%m-%d')_docker_rmi.log"
|
🔍 查看清理历史
1 2 3 4 5 6 7 8 9 10 11
| ls -lt /mnt/docker-rmi-log/*_docker_rmi.log | head -5
ls -lt /mnt/docker-rmi-log/*_docker_rmi.log | head -5 | awk '{print $9}' | xargs cat
grep "Total reclaimed space" /mnt/docker-rmi-log/*.log
cat "/mnt/docker-rmi-log/$(date +'%Y-%m-%d')_docker_rmi.log"
|
⚡ 快速参考
🎯 常用命令速查表
操作 |
命令 |
说明 |
查看镜像 |
docker images |
列出本地镜像 |
删除镜像 |
docker rmi <image> |
删除指定镜像 |
强制删除 |
docker rmi -f <image> |
强制删除镜像 |
拉取镜像 |
docker pull <image:tag> |
从仓库拉取镜像 |
查看空间 |
docker system df |
查看磁盘使用情况 |
清理悬空 |
docker image prune |
清理悬空镜像 |
全面清理 |
docker system prune |
清理所有未使用对象 |
🔄 工作流程示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker images
docker system df
docker image prune -f
docker rmi old-image:tag
docker system df -v
|
⚠️ 注意事项
🔴 重要警告
💀 数据丢失风险
🐳 容器依赖检查
1 2 3 4 5
| docker ps -a --filter "ancestor=image-name"
docker image inspect --format='{{.RepoTags}} {{.Containers}}' image-id
|
📦 生产环境谨慎操作
🛡️ 安全建议
✅ 定期清理计划
📋 日志记录重要性
🔍 清理前检查
1 2
| docker image prune --dry-run
|
💡 专业提示:定期清理Docker镜像不仅可以释放磁盘空间,还能提高镜像拉取和容器启动的速度。建议建立自动化的清理机制,但务必谨慎操作,避免误删重要镜像。