本页内容
- 环境要求
- 如何监控和查看 Docker 容器的 CPU 与内存占用
- 通过伪文件查看 Docker 容器资源占用
- 总结
Docker 是当下最流行且被广泛使用的容器化平台之一,用于构建、共享和运行应用程序。当今,大多数应用都部署在容器化平台上,因此管理 Docker 容器是任何系统管理员的核心任务。Docker 允许你查看并监控 Docker 容器的资源占用情况,例如 CPU 和 Memory 使用率。
本教程将向你展示如何查看 Docker 容器的 CPU 和 RAM 占用情况。
环境要求
- 一台已安装 Docker 的 Linux 服务器。
- 服务器已配置 root 密码。
如何监控和查看 Docker 容器的 CPU 与内存占用
Docker 提供一个 stats 子命令,可用于查看正在运行的 Docker 容器的 Memory 和 CPU 使用率。
要列出所有 docker stats 命令,请运行以下命令。
docker stats --help
你将看到如下输出。
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
现在,让我们运行 docker stats 命令来查看所有正在运行容器的状态:
docker stats
你将在以下输出中看到所有正在运行容器的信息。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 726B / 0B 0B / 12.3kB 3 e0ee5b16c93f portainer 0.84% 24.6MiB / 3.839GiB 0.63% 1.02MB / 4.35MB 0B / 721kB 5
默认情况下,docker stats 命令会显示所有容器状态的实时数据流。如果你想查看所有正在运行容器的首次状态,请使用 --no-stream 参数。
docker stats --no-stream
你将看到如下输出。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 796B / 0B 0B / 57.3kB 3 e0ee5b16c93f portainer 0.00% 25.5MiB / 3.839GiB 0.65% 1.03MB / 4.35MB 0B / 721kB 5
默认情况下,docker stats 命令只显示正在运行容器的状态。如果你想同时显示运行中与已停止容器的状态,请使用 -a 参数:
docker stats --no-stream -a
如果你想查看某个特定容器的状态,请在 docker stats 命令后附加容器 ID。
docker stats cb40a0f56aba
你将看到如下输出。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 796B / 0B 0B / 57.3kB 3
运行以下命令,仅显示所有正在运行容器的 CPU 信息。
docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream
输出。
cb40a0f56aba 0.00% e0ee5b16c93f 0.00%
运行以下命令,仅显示所有正在运行容器的 CPU 和 Memory 信息。
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}"
输出。
CONTAINER CPU % MEM % cb40a0f56aba 0.00% 0.07% e0ee5b16c93f 0.10% 0.59%
通过伪文件查看 Docker 容器资源占用
你也可以从位于 Docker 容器宿主机 /sys/fs/cgroup 目录下的控制组(control groups)中查看 Docker 容器的各项指标。
首先,使用以下命令获取所有正在运行的容器 ID。
docker ps --no-trunc --format "{{.Names}}\t{{.ID}}"
你将看到如下输出。
determined_robinson cb40a0f56aba8b3a29513dafa7622f8d5d6435c9302dc6a3db73ea5eca506af5 portainer e0ee5b16c93f358a15dfcb93cc80d2c2d1c1c675e7b65e41434ce20f08773465
接下来,运行以下命令获取第二个容器的状态。
cat /sys/fs/cgroup/system.slice/docker-e0ee5b16c93f358a15dfcb93cc80d2c2d1c1c675e7b65e41434ce20f08773465.scope/cpu.stat
你将在以下输出中看到该容器的指标。
usage_usec 1550758 user_usec 1301875 system_usec 248883 nr_periods 0 nr_throttled 0 throttled_usec 0
总结
在本文中,我们向你展示了如何通过命令行查看 Docker 容器的 CPU 和 Memory 占用。希望这能帮助你监控自己的 Docker 环境。如有任何疑问,欢迎随时向我提问。