为什么SLES 12上的docker容器占用的内存是Ubuntu的2倍?

为什么SLES 12上的docker容器占用的内存是Ubuntu的2倍?,docker,Docker,我注意到我在SLE12上的docker容器占用的内存大约是Ubuntu上相同容器的2倍。同一版本的docker 例如,运行selenium/hub,不运行任何测试(根本不使用容器进行任何操作),大约1分钟后docker的统计数据如下: 只加载selenium/hub,不做任何事情(无测试等): SLES 12: CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 8ce43b4e9a23

我注意到我在SLE12上的docker容器占用的内存大约是Ubuntu上相同容器的2倍。同一版本的docker

例如,运行selenium/hub,不运行任何测试(根本不使用容器进行任何操作),大约1分钟后docker的统计数据如下:

只加载selenium/hub,不做任何事情(无测试等):

SLES 12:

CONTAINER    CPU % MEM USAGE / LIMIT   MEM %    NET I/O       BLOCK I/O     PIDS
8ce43b4e9a23 0.06% 149.1MiB / 15.6GiB  0.93%    0B / 0B       57.5MB / 0B   0
Ubuntu:

CONTAINER    CPU % MEM USAGE / LIMIT     MEM %   NET I/O       BLOCK I/O       PIDS
05d3140608b4 0.12% 74.79 MiB / 15.67 GiB 0.47%   0 B / 648 B   0 B / 8.19 kB   26

有什么想法吗?

docker info的输出是什么

在Ubuntu上,默认的存储驱动程序是SLES使用或时

以上链接摘录:

内存使用:devicemapper使用的内存比其他设备多 存储驱动程序。每个启动的容器加载一个或多个 它将文件放入内存,具体取决于同一文件的块数 正在同时进行修改。由于内存压力,导致 某些情况下,devicemapper存储驱动程序可能不是正确的选择 高密度用例中的工作负载

-

页面缓存。Btrfs不支持页缓存共享。这意味着 访问同一文件的每个进程都会将该文件复制到 Docker托管内存。因此,btrfs驱动程序可能不是 最佳选择高密度用例,如PaaS

SLES 12支持的存储驱动程序包括:

我想如果您升级到带有4.4.21内核的SP2,您可以使用覆盖2


由于您使用的是相同的映像,但获得的资源消耗指标不同,我猜这是因为各个操作系统的基本内核不同


容器(由docker创建)消耗多少资源取决于它。Docker使用内核级API()来促进程序所需的隔离

很奇怪为什么SLES中的PIDS=0。