为什么我的容器没有使用主机的可用 RAM?

Why is my container is not using the available RAM of my host machine?

我 运行 docker 使用 windows 16GB RAM 的机器。 根据 docker stats,我的容器使用 4GB 内存(见下面的输出)。但是,根据我的 windows 任务管理器,没有进程占用那种内存,并且当我 start/stop 我的容器时,我的计算机上的内存使用不会改变。

因此我的问题是

  1. 容器使用的 4GB RAM 来自哪里(磁盘作为 RAM?)
  2. 我如何配置我的容器以使用可用的 RAM

我的容器非常慢,我怀疑是因为上述行为;它在哪里使用磁盘作为虚拟内存,因此并没有真正使用它可用的资源(RAM)。

$ docker stats

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
66a9ccfd0a51        quirky_wozniak      0.04%               4.268GiB / 4.815GiB   88.63%              113kB / 20.2kB      40.8MB / 1.07MB     16

task manager screen shot

Docker Settings

Docker for Windows 通常运行 VM 来支持 Linux 容器。分配给此 VM 的内存是 docker 主机上可用的内存。在首选项中,有一个菜单可以配置 CPU 核心数和专用于该 VM 的内存量:

(图片来源:Docker for Windows documentation

问题是任务管理器不将 Hyper-V 视为进程,因此不会显示在进程列表中。 换句话说,任务管理器并没有显示正在消耗的内存,只是在摘要中。

通过使用 RMAP 等高级工具,我们可以看到 "Driver Locked" 部分正在使用内存。