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 就能满足绝大多数场景。简单、快速、信息完整,是查看容器内存占比的首选方式。

浙公网安备 33010602011771号