在 Docker 容器内,你可以使用 Linux 的工具来查看每个进程内存的占用量。以下是几种常用的方法:


方法1: 使用 ps 命令

ps 命令可以显示当前运行的进程,并且支持查看每个进程的内存使用情况。

ps aux --sort=-%mem

其中:

  • aux: 显示所有进程的详细信息;
  • --sort=-%mem: 按内存使用率降序排列。

在输出中,有一列 %MEM 表示进程占用的**百分比内存**,另一列 RSS 表示**实际使用的物理内存**(以 KB 为单位)。


方法2: 使用 top 命令

top 是实时监控系统资源使用情况的工具,包含每个进程的内存和 CPU 使用情况。

top

在输出中:

  • RES: 表示当前进程实际占用的物理内存(Resident Memory);
  • %MEM: 表示进程的内存使用比例。

如果你只想聚焦内存,可以按 Shift + f 调出列选择,选择 %MEMRES 排序。


方法3: 使用 htop 工具 (可选)

htop 是更好用的交互式工具,比 top 更人性化。你可以在 Docker 容器内安装它:

apt-get update && apt-get install -y htop
htop

然后你可以按 F6 键选择内存列,按内存占用量排序。


方法4: 直接从 /proc 文件系统查看

每个进程都有对应的 /proc/<pid> 目录,里面包含资源使用信息。例如:

cat /proc/<pid>/status | grep -i memory

或者:

cat /proc/<pid>/smaps

你可以通过脚本遍历 /proc 下的所有 PID 来统计内存使用:

for pid in $(ls /proc | grep -E '^[0-9]+$'); do
    echo -n "PID: $pid "
    grep VmRSS /proc/$pid/status 2>/dev/null
done

VmRSS 即为进程实际占用的**物理内存**。


注意事项

由于 Docker 容器是在 cgroup 限制范围内运行,进程的内存占用可能会受到 cgroup 限制的影响。因此,你也可以检查 cgroup 的内存限制文件:

cat /sys/fs/cgroup/memory/memory.limit_in_bytes



linux docker 内如何查看每个进程内存的占用量插图

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

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

本文链接:https://www.choupangxia.com/2025/09/16/linux-docker-mem/