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

时间:2019-04-30 15:43:52

标签: docker memory memory-management docker-desktop

我正在具有16GB RAM的Windows机器上运行docker。 我的容器按照docker stats使用4GB的内存(请参见下面的输出)。但是,按照我的Windows任务管理器的指示,没有进程占用那种内存,并且当我启动/停止容器时,我的计算机上的内存使用情况不会改变。

所以我的问题是

  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

2 个答案:

答案 0 :(得分:0)

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

Advance VM settings

(图片来源:Docker for Windows documentation

答案 1 :(得分:0)

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

通过使用RMAP之类的高级工具,我们可以在“驱动程序锁定”部分看到内存正在使用。