Docker 如何查看各个容器的内存占比?一篇实用指南

前言

在日常运维或排查问题时,经常需要快速了解每个 Docker 容器当前占用了多少内存,以及占总内存的比例。今天分享最简单、最常用的方法。

1. 最推荐的方式:docker stats

直接运行:

docker stats

就会实时刷新所有正在运行容器的资源使用情况,重点关注这两列:

  • MEM USAGE / LIMIT:当前使用内存 / 容器内存上限
  • MEM %:内存使用占比(就是你最想看的)

示例输出:

CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
a1b2c3d4e5f6   nginx         0.15%     12.5MiB / 7.76GiB     0.16%     1.2kB / 0B        0B / 0B           2
b2c3d4e5f6a7   redis         0.02%     8.3MiB / 7.76GiB      0.10%     0B / 0B           0B / 0B           5

按 Ctrl + C 退出实时刷新。

2. 只想看一次快照(不持续刷新)

docker stats --no-stream

适合脚本或偶尔查看。

3. 只看指定容器

docker stats nginx redis mysql

或者只看一个:

docker stats 容器名或ID

4. 自定义输出格式(更干净)

只显示名称、内存使用和占比:

docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}"

输出会变成:

NAME     MEM USAGE / LIMIT     MEM %
nginx    12.5MiB / 7.76GiB     0.16%
redis    8.3MiB / 7.76GiB      0.10%

补充说明

  • 如果容器启动时没有用 --memory 设置限制,LIMIT 通常就是宿主机的总内存。
  • docker stats 显示的是实际占用(包含 RSS 和部分缓存),比单纯看 docker inspect 更直观。
  • 想深入看 cgroup 内存明细,可以进容器查看:
# cgroup v1
docker exec 容器名 cat /sys/fs/cgroup/memory.stat

# cgroup v2
docker exec 容器名 cat /sys/fs/cgroup/memory.current

总结

日常使用直接敲 docker stats 就够了,再配合 --no-stream 和 --format 就能满足绝大多数场景。简单、快速、信息完整,是查看容器内存占比的首选方式。

posted @ 2026-09-22 09:57  牛奔  阅读(6)  评论(0)    收藏  举报