一文带你搞定docker system的所有命令
作者:修己xj
从磁盘爆满到优雅清理,Docker系统管理完全指南

“我的虚拟机又提示磁盘空间不足了!”
相信每个Docker用户都经历过这样的时刻。打开虚拟机一看,镜像、容器、卷、构建缓存,加起来轻松占据几十GB。Docker是怎么悄悄吃掉你的硬盘的?又如何优雅地清理它们?
答案就在 docker system 这组命令里。
docker system 是 Docker 提供的一组管理命令,用于查看和管理 Docker 守护进程的整体状态、磁盘使用情况、系统信息等。它不直接操作容器或镜像,而是从全局视角管理 Docker 引擎本身。
所有子命令概览
| 命令 | 作用 | 常用程度 |
|---|---|---|
docker system df | 显示 Docker 磁盘使用情况 | ⭐⭐⭐⭐⭐ |
docker system prune | 删除未使用的 Docker 对象 | ⭐⭐⭐⭐⭐ |
docker system info | 显示系统范围的信息 | ⭐⭐⭐⭐ |
docker system events | 获取 Docker 守护进程的实时事件 | ⭐⭐⭐ |
docker system dial-stdio | 管理 Docker 守护进程的连接(高级) | ⭐ |
各命令详细说明
1.docker system df- 查看磁盘使用情况
最常用的命令,用于查看 Docker 占用了多少磁盘空间。
基本用法:
docker system df
输出示例:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 21 21 8.797GB 460.6MB (5%)
Containers 24 24 565MB 0B (0%)
Local Volumes 8 8 123MB 0B (0%)
Build Cache 20 0 922.7MB 922.7MB
各列含义:
TYPE: 对象类型(镜像、容器、卷、构建缓存)TOTAL: 总数量ACTIVE: 正在使用的数量SIZE: 占用空间大小RECLAIMABLE: 可以回收(删除)的空间大小及百分比
详细模式(显示每个对象):
docker system df -v
这会列出每个镜像、容器、卷的具体信息,适合深入分析空间占用。

实用示例:
# 查看所有对象的详细信息,排序查看最大的镜像 docker system df -v | grep -A 10 "Images" # 只查看镜像占用 docker system df | grep Images # 查看格式化的输出(JSON格式) docker system df --format "json"
2.docker system prune- 清理未使用对象
清理命令,删除不再使用的 Docker 对象以释放空间。
完整参数表:
| 参数 | 说明 | 删除内容 |
| 无参数 | 基础清理 | 停止的容器、未使用的网络、悬空镜像、悬空构建缓存 |
-a, --all | 清理所有未使用的镜像 | 基础清理 + 所有未被容器引用的镜像 |
--volumes | 清理卷 | 基础清理 + 所有未被容器引用的卷 |
-f, --force | 强制执行 | 不提示确认,直接删除 |
--filter | 条件过滤 | 根据特定条件筛选要删除的对象 |
组合使用示例:
# 1. 标准清理(最安全) docker system prune # 2. 清理所有未使用镜像(不清理卷) docker system prune -a # 3. 清理所有未使用镜像和卷(危险) docker system prune -a --volumes # 4. 自动确认,不询问 docker system prune -f # 5. 清理24小时前的资源 docker system prune --filter "until=24h" # 6. 清理带有特定标签的资源 docker system prune --filter "label=deprecated=true"
过滤条件高级用法:
# 清理超过指定时间的对象 docker system prune --filter "until=2026-01-01T00:00:00Z" # 组合多个条件(逻辑与) docker system prune -a --filter "until=24h" --filter "label!=keep" # 排除某个标签的资源 docker system prune --filter "label!=important"
安全建议:
- 生产环境:只用
docker system prune(不加-a和--volumes) - 开发环境:可以用
docker system prune -a,节省空间 - 避免使用
--volumes除非确定数据不重要
3.docker system info- 系统信息
显示 Docker 引擎和主机的详细信息。
基本用法:
docker system info # 或使用旧命令别名 docker info
输出内容包括:
- 服务器版本:Docker Engine 版本号
- 操作系统:运行 Docker 的主机系统
- 内核版本:Linux 内核版本
- CPU/内存:主机硬件资源
- 存储驱动:overlay2, aufs 等
- 日志驱动:json-file, journald 等
- 安全选项:seccomp, AppArmor, SELinux
- 镜像加速器:Registry Mirrors 配置
- 容器运行时:runc, containerd 版本
实用示例:
# 查看 Docker 根目录位置
docker info | grep "Docker Root Dir"
# 查看存储驱动和空间
docker info | grep -A 5 "Storage Driver"
# 查看当前运行的容器数量
docker info | grep "Containers:"
# 输出为JSON格式(便于脚本处理)
docker info --format "{{json .}}"
docker info -f "{{.ServerVersion}}"
4.docker system events- 事件监控
实时监控 Docker 守护进程产生的事件。
基本用法:
docker system events
事件类型:
- 容器事件:create, start, stop, kill, die, pause, unpause, delete
- 镜像事件:pull, push, tag, untag, delete, save, load
- 卷事件:create, mount, unmount, destroy
- 网络事件:create, connect, disconnect, destroy
- 守护进程事件:reload
实用示例:
# 只监控容器相关事件
docker system events --filter type=container
# 只监控镜像拉取事件
docker system events --filter event=pull
# 监控特定容器的所有事件
docker system events --filter container=my-container
# 监控带特定标签的事件
docker system events --filter label=com.example.env=production
# 只显示最近10条事件
docker system events --since 10m
# 按时间范围过滤
docker system events --since "2026-01-01T00:00:00Z" --until "2026-01-02T00:00:00Z"
# 格式化输出(只显示时间和事件)
docker system events --format "{{.Time}} {{.Type}} {{.Action}}"
5.docker system dial-stdio- 高级连接管理
这是一个相对底层的命令,用于与 Docker 守护进程建立双向流式连接。主要用于调试和开发场景。
使用场景:
- Docker CLI 插件的开发
- 远程调试 Docker 守护进程
- 高级网络诊断
示例:
# 通常不直接使用,而是在插件中通过 API 调用 docker system dial-stdio
实战组合技巧
技巧1:清理前的预览
# 先查看占用情况 docker system df # 预览会被删除的内容(不实际删除) docker system prune -a --volumes --dry-run # 注意:--dry-run 不是所有版本都支持 # 替代方案:手动检查 docker container ls -a | grep Exited # 查看停止的容器 docker image ls -a # 查看所有镜像 docker volume ls -f dangling=true # 查看未使用的卷
技巧2:定期自动清理(Cron任务)
# 编辑 crontab crontab -e # 每天凌晨2点清理(安全模式) 0 2 * * * /usr/bin/docker system prune -f # 每周日凌晨3点深度清理(保留最近7天) 0 3 * * 0 /usr/bin/docker system prune -a --filter "until=168h" -f
技巧3:监控磁盘变化
# 实时监控 Docker 磁盘占用 watch -n 5 'docker system df' # 记录空间变化到日志 echo "$(date): $(docker system df | grep Images)" >> disk-usage.log
技巧4:一键清理脚本
#!/bin/bash # docker-cleanup.sh - 安全的清理脚本 echo "当前磁盘占用:" docker system df echo "" echo "清理停止的容器、悬空镜像和未使用的网络..." docker system prune -f echo "" echo "清理旧的构建缓存(7天以上)..." docker builder prune -f --filter "until=168h" echo "" echo "清理未使用的卷(需要确认)..." docker volume prune echo "" echo "清理完成!" docker system df
最佳实践总结
| 环境 | 推荐命令 | 频率 |
|---|---|---|
| 生产环境 | docker system prune | 每周1次 |
| 开发环境 | docker system prune -a | 每天1次 |
| CI/CD 环境 | docker system prune -a --volumes -f | 每次构建前 |
| 个人学习 | docker system prune -a --volumes | 磁盘满时 |
| Docker Desktop (Mac/Windows) | docker system prune -a | 月度维护 |
注意:
--volumes= 数据可能永久丢失-a= 镜像需要重新下载- 无参数 = 最安全,日常使用
到此这篇关于一文带你搞定docker system的所有命令的文章就介绍到这了,更多相关docker system命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
