在 Linux 下部署的 Docker 容器中,查看运行中的容器的内存使用情况可以通过多种方法实现,包括使用 Docker 自身命令、docker stats、查看容器底层的统计信息文件,以及结合系统工具(如 tophtop 等)进行监控。

以下是详细的说明:


方式 1:使用 docker stats 查看容器的实时资源使用情况

docker stats 命令可以实时显示运行的容器的资源使用情况,包括 CPU 使用率、内存使用量、网络流量和 I/O 信息。

命令:

docker stats

运行后会列出所有容器的资源使用情况,类似于以下结果:

CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
abcdef12345    my-container   2.34%     52.5MiB / 512MiB      10.25%    1.03kB / 5.12kB   0B / 0B           5
1234abcd5678   another-one    10.56%    200.1MiB / 1GiB       19.56%    2.15MB / 1.78MB   8.15kB / 12.5kB   15

参数说明:

  • CONTAINER ID: 容器 ID。
  • NAME: 容器名称。
  • CPU %: CPU 使用率,相对于系统的占比。
  • MEM USAGE / LIMIT: 内存使用量与限制值。
  • MEM %: 内存使用百分比。
  • NET I/O: 容器的网络 I/O,包括输入和输出流量。
  • BLOCK I/O: 容器的块存储 I/O(磁盘读写)。
  • PIDS: 容器内运行的进程数。

查看指定容器:

如果只想查看某个容器的资源使用情况,可以指定容器名称或 ID:

docker stats <容器名称或容器ID>

方式 2:使用容器内部的统计信息文件

Docker 将容器的资源使用信息保存到主机的文件系统中,可以直接查看这些文件。

文件路径:

/var/lib/docker/containers/<容器ID>/<统计信息文件>

具体可以查看以下文件:

  • /var/lib/docker/containers/<容器ID>/memory.stat: 内存统计信息。
  • /var/lib/docker/containers/<容器ID>/cpu.stat: CPU 使用统计。

示例:查看容器的内存信息

cat /sys/fs/cgroup/memory/docker/<容器ID>/memory.usage_in_bytes

返回的结果是以字节为单位的内存使用量,可以通过计算转化为 MB 或 GB。

示例:查看 CPU 信息

cat /sys/fs/cgroup/cpu/docker/<容器ID>/cpuacct.usage

返回的结果是 CPU 时间(以纳秒为单位)。


方式 3:通过 tophtop 查看容器内进程的资源占用

容器实际上是运行于 Linux 进程之上的,通过命令工具可以直接监控进程资源使用情况。

查看所有 Docker 容器进程:

top -c

然后找到与 Docker 容器对应的进程,查看资源使用。

使用 htop

安装并运行 htop,通过进程名称快速筛选 Docker 容器:

apt install htop -y  # 或 yum install htop -y
htop

htop 界面中可以按F3搜索容器对应的进程名称或 ID,实时查看内存、CPU 使用率。


方式 4:使用 docker inspect 查看详细信息

通过 docker inspect 可以查看容器的详细信息,包括资源限制和运行时状态。

查看容器配置:

docker inspect <容器名称或容器ID>

查询内存限制:

从输出结果的 HostConfig 中查看内存的限制值:

"HostConfig": {
    "Memory": 536870912,   # 内存限制,字节单位
    "CpuShares": 512
}

方式 5:安装监控工具(如 cadvisorprometheus

如果需要长期监控容器的资源情况,可以使用专门的 Docker 监控工具。

方法 1:使用 cAdvisor

cadvisor 是 Google 开源的容器监控工具,可以轻松监控容器资源使用。

docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 --name=cadvisor --privileged \
  gcr.io/cadvisor/cadvisor:latest

然后通过浏览器访问 http://<主机IP>:8080 查看实时监控数据。

方法 2:使用 Prometheus + Grafana

Prometheus 和 Grafana 是更完善的监控套件,结合使用可以搭建图形化的监控系统:

  1. 部署 prometheusnode_exporter 进行数据采集。
  2. 部署 grafana 创建实时图表。

具体监控指南可以根据你的需求选择合适工具。


方式 6:结合 docker-compose 查看资源使用

如果你是通过 docker-compose 部署的,可以通过 docker-compose stats 查看资源使用情况:

docker-compose stats

监控脚本化(可选)

可以使用 Bash 脚本定时监控容器内存:

#!/bin/bash
for container in $(docker ps -q); do
    echo "容器ID: $container"
    docker stats --no-stream $container | grep $container
done

将其保存为 monitor.sh 并运行,实时输出所有容器的资源使用情况。


总结:

  • docker stats 是实时查看容器资源使用的最直接命令。
  • 配合 docker inspect 可以检查容器的运行配置。
  • 对于长期监控,建议使用 cAdvisorPrometheus+Grafana 搭建更高级的监控系统。


如何查看Linux下Docker 容器的内存使用情况插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2025/08/02/linux-docker-2/