最直接有效的方式是使用 docker stats 命令,它能实时输出容器的 CPU、内存、网络和磁盘 I/O 使用情况,数据每秒刷新一次,直到手动中断(Ctrl+C);支持查看所有运行中容器、指定容器、Compose 项目容器,可加 --no-stream 获取单次快照,并通过 --format 自定义输出格式。
最直接有效的方式是使用 docker stats 命令,它能实时输出容器的 cpu、内存、网络和磁盘 i/o 使用情况,数据每秒刷新一次,直到你手动中断(ctrl+c)。
基础用法:看所有运行中容器
在终端执行:
docker stats
会列出当前所有正在运行的容器,每列含义如下:
- CPU %:占用宿主机总 CPU 的百分比(非单核)
- MEM USAGE / LIMIT:已用内存 / 内存上限;若未设限制,LIMIT 显示宿主机总内存
- MEM %:内存使用率(基于 LIMIT 计算)
- NET I/O:累计网络收发字节数
- BLOCK I/O:累计磁盘读写字节数
-
PIDS:当前容器内进程数(需启动时设置
--pids-limit才有 LIMIT 值)
精准监控:只盯特定服务或 Compose 项目
如果你用 Docker Compose 启动服务,容器名通常带前缀(如 myapp-web-1),可直接指定:
docker stats myapp-web-1
或一次性监控整个项目下的所有容器:
docker stats $(docker-compose ps -q)
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
该命令先获取当前项目所有容器 ID,再传给 docker stats,避免手动找名字。
轻量脚本化:单次快照而非持续刷新
在自动化脚本或 CI/CD 中,通常只需当前瞬时值。加 --no-stream 即可:
docker stats --no-stream myapp-web-1
还可配合 Go 模板定制输出,比如只看名称、CPU 和内存使用率:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" myapp-web-1
验证资源限制是否生效
如果容器启动时设置了内存或 CPU 限制(如 -m 512m 或 --cpus=1.5),docker stats 输出中的 LIMIT 列会显示对应值。若未显示 LIMIT,说明未正确配置限制——检查 docker run 命令或 docker-compose.yml 中的 mem_limit(单机)或 deploy.resources.limits.memory(Swarm)字段。

















