Docker容器中的内存限制和CPU限制

15

更新:

在stackoverflow上发现了很多与此主题相关的问题和讨论,尽管它们被标记为被接受的答案并由成千上万的用户发起,但它们似乎不是正确的答案。


我运行了一个docker(版本1.13.1,构建092cba3)容器,并设置了资源限制如下:

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -m 4096M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 -p $IMAGE_NAME

主机系统(RHEL 7)有4个核心和8G内存。基本上,我想限制容器可用的内存和CPU。成功启动容器后,我打开了bash并尝试从容器内部查找限制信息。但是我无法获得正确的信息。
我尝试了以下内容:
sudo cat /proc/meminfo

结果如下:

输出结果为:

宿主机系统 内存总量:8008812 kB 可用内存:7537332 kB 空闲内存:7416404 kB
Docker容器 内存总量:8008812 kB 可用内存:7498764 kB 空闲内存:7318052 kB

类似地,我想获取CPU限制:

grep -c ^processor /proc/cpuinfo

结果是: 主机系统 4
Docker镜像 4
似乎容器强制执行的CPU和内存限制对容器不可见。我还尝试查询cgroup信息。
mkdir -p /tmp/memory
mount -n -t cgroup -o memory cgroup /tmp/memory

然后我查看cgroup文件:

[root@engrlab memory]# cat /tmp/memory/memory.limit_in_bytes
9223372036854771712

这个数字大于主机系统的实际内存。

有没有一种方法可以验证容器中的资源限制是否被正确设置?我该如何在容器内查找资源限制信息?感谢任何建议。

2个回答

6

我尝试在我的 Docker 主机上运行此命令,它可以正常工作。

docker run -it -d -m 100M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 --name testing ubuntu /bin/bash

docker stats testing


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接