菜鸟科技网

Docker监控命令有哪些?如何高效使用?

核心监控命令

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

Docker监控命令有哪些?如何高效使用?-图1
(图片来源网络,侵删)

docker ps - 查看运行中的容器

这是最基本、最常用的命令,用于快速查看当前正在运行的容器。

常用选项:

  • -a--all: 显示所有容器(包括已停止的)。
  • -q--quiet: 只显示容器的 ID。
  • -ssize: 显示容器文件大小。
  • --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 的使用情况,它非常适合快速诊断性能瓶颈。

Docker监控命令有哪些?如何高效使用?-图2
(图片来源网络,侵删)

常用选项:

  • -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 系统中的 topps 命令。

Docker监控命令有哪些?如何高效使用?-图3
(图片来源网络,侵删)

示例:

# 查看 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

日常排查流程建议:

  1. 发现问题: 通过 docker stats 发现某个容器资源使用异常。
  2. 查看日志: 使用 docker logs -f <container> 查看日志,寻找错误信息。
  3. 检查进程: 使用 docker top <container> 查看容器内是否有异常进程。
  4. 深入分析: 使用 docker inspect -f '<...>' <container> 检查网络、挂载等配置是否正确。
  5. 检查磁盘: 如果容器频繁重启或写入失败,使用 docker system df 检查磁盘空间。
  6. 持续监控: 对于复杂问题,使用 docker events 或第三方工具进行持续观察。
分享:
扫描分享到社交APP
上一篇
下一篇