核心监控命令
这些是日常使用最频繁、最核心的监控命令。

docker ps - 查看运行中的容器
这是最基本、最常用的命令,用于快速查看当前正在运行的容器。
常用选项:
-a或--all: 显示所有容器(包括已停止的)。-q或--quiet: 只显示容器的 ID。-s或size: 显示容器文件大小。--format: 格式化输出,非常强大,可以自定义显示列。
示例:
# 1. 查看所有正在运行的容器
docker ps
# 2. 查看所有容器(包括已停止的)
docker ps -a
# 3. 只显示所有容器的 ID
docker ps -aq
# 4. 格式化输出,只显示 NAME 和 STATUS
docker ps --format "table {{.Names}}\t{{.Status}}"
docker stats - 实时查看资源使用情况
这个命令会实时显示正在运行容器的 CPU、内存、网络 I/O 和磁盘 I/O 的使用情况,它非常适合快速诊断性能瓶颈。

常用选项:
-a或--all: 显示所有容器(包括停止的)。--no-stream: 禁止实时刷新,只显示当前快照。--format: 格式化输出。
示例:
# 1. 实时查看所有运行中容器的资源使用情况
docker stats
# 2. 只查看特定容器的资源使用情况
docker stats my-container
# 3. 查看所有容器的资源使用快照(不刷新)
docker stats --no-stream
# 4. 格式化输出,只显示容器名和 CPU/内存使用百分比
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}"
深入诊断命令
当 docker stats 提供的信息不够详细时,可以使用以下命令进行深入分析。
docker top - 查看容器内进程
docker top 命令可以显示容器内部正在运行的进程列表,类似于 Linux 系统中的 top 或 ps 命令。

示例:
# 查看 my-container 容器内的进程 docker top my-container
docker inspect - 检查容器/镜像的底层信息
docker inspect 是一个非常强大的命令,它可以返回容器、镜像、网络等的底层 JSON 格式信息,包括 IP 地址、挂载点、环境变量、资源配置等。
常用选项:
-f或--format: 提取 JSON 中的特定字段,这是最常用的用法。
示例:
# 1. 查看 my-container 的完整配置信息(JSON 格式)
docker inspect my-container
# 2. 只查看容器的 IP 地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
# 3. 查看容器的日志路径
docker inspect -f '{{.LogPath}}' my-container
# 4. 查看容器的挂载点
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' my-container
docker logs - 查看容器日志
日志是排查问题的核心。docker logs 用于查看容器的标准输出和标准错误。
常用选项:
-f或--follow: 跟踪日志输出,类似于tail -f。--tail: 只显示最后 N 行日志。-t或--timestamps: 在日志行中显示时间戳。--since: 显示从某个时间点之后的日志。
示例:
# 1. 查看容器的所有日志 docker logs my-container # 2. 跟踪查看容器的实时日志 docker logs -f my-container # 3. 查看容器最新的 100 行日志 docker logs --tail 100 my-container # 4. 查看从 10 分钟前开始的日志 docker logs --since 10m my-container
系统级和性能分析命令
这些命令通常需要结合 Linux 系统工具使用,用于分析容器对宿主机系统资源的影响。
docker system df - 查看 Docker 磁盘使用情况
这个命令类似于 df -h,但它专门用于查看 Docker 相关的磁盘空间占用情况,包括镜像、容器、本地卷和构建缓存。
示例:
# 查看 Docker 的磁盘使用情况 docker system df
输出解读:
- Images: 所有镜像占用的空间。
- Containers: 所有容器占用的空间。
- Local Volumes: 所有本地卷占用的空间。
- Build Cache: 构建缓存占用的空间。
docker system prune - 清理 Docker 资源
与监控相关的是,当磁盘空间不足时,可以使用此命令来清理无用的资源(如停止的容器、无用的网络、悬空镜像等)。
常用选项:
-a: 删除所有未被任何容器使用的镜像。--all或-a: 删除所有未被任何容器使用的镜像,以及所有悬空镜像。--volumes: 删除所有未被使用的本地卷。
⚠️ 警告: prune 命令会删除数据,请谨慎使用。
# 清理所有停止的容器、未被使用的网络、悬空镜像和构建缓存 docker system prune # 更激进的清理:删除所有未被使用的镜像和数据卷 docker system prune -a --volumes
docker events - 实时监控 Docker 事件
docker events 可以让你实时监控 Docker 服务器上发生的所有事件,如容器的启动、停止、创建、删除、镜像的拉取、推送等,这对于自动化和调试非常有用。
常用选项:
--filter: 根据条件过滤事件。--format: 格式化输出。
示例:
# 1. 实时监控所有 Docker 事件 docker events # 2. 只监控与特定容器相关的事件 docker events --filter container=my-container # 3. 只监控镜像拉取事件 docker events --filter event='pull' # 4. 监控从某个时间点之后的事件 docker events --since '2025-10-27T08:00:00'
高级监控方案(第三方工具)
对于生产环境,通常需要更专业、更集中的监控解决方案,它们可以提供历史数据、图表、告警等功能。
cAdvisor (Google 开源)
- 简介: Docker 官方推荐,用于收集、聚合、处理和输出容器资源使用信息,它通常作为守护进程运行在每台主机上。
- 使用: 很多监控平台(如 Prometheus)会直接集成 cAdvisor 的数据源。
Prometheus + Grafana
- 简介: 这是目前最主流的容器监控解决方案。
- Prometheus: 负责从各个目标(如 cAdvisor, Docker 守护进程)抓取指标数据,并将其存储在时序数据库中。
- Grafana: 负责从 Prometheus 读取数据,并将其可视化为漂亮的仪表盘。
- 优点: 功能强大,可扩展性强,社区活跃,拥有丰富的预置仪表盘。
Portainer
- 简介: 一个功能强大的 Docker/Kubernetes 管理界面,它本身就集成了监控功能,可以直观地展示容器资源使用情况和日志。
Datadog / New Relic
- 简介: 商业化的 SaaS 监控平台,它们提供强大的开箱即用的监控解决方案,无需自己搭建和维护基础设施,但需要付费。
总结与速查表
| 命令 | 主要用途 | 常用选项 |
|---|---|---|
docker ps |
列出容器 | -a, -q, --format |
docker stats |
实时资源监控 | -a, --no-stream, --format |
docker top |
查看容器内进程 | 无 |
docker inspect |
查看底层详细信息 | -f (提取字段) |
docker logs |
查看容器日志 | -f, --tail, -t |
docker system df |
查看 Docker 磁盘使用 | 无 |
docker system prune |
清理 Docker 资源 | -a, --volumes |
docker events |
实时监控 Docker 事件 | --filter, --format |
日常排查流程建议:
- 发现问题: 通过
docker stats发现某个容器资源使用异常。 - 查看日志: 使用
docker logs -f <container>查看日志,寻找错误信息。 - 检查进程: 使用
docker top <container>查看容器内是否有异常进程。 - 深入分析: 使用
docker inspect -f '<...>' <container>检查网络、挂载等配置是否正确。 - 检查磁盘: 如果容器频繁重启或写入失败,使用
docker system df检查磁盘空间。 - 持续监控: 对于复杂问题,使用
docker events或第三方工具进行持续观察。
