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

时间:2018-02-21 23:44:08

标签: linux docker linux-kernel containers cgroups

更新:

在stackoverflow上发现了很多关于这个主题的问题和讨论。虽然它们被标记为接受并由数千名用户启动,但它们似乎不是正确的答案。

我运行了一个具有资源限制的docker(版本1.13.1,build 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

结果是:

主机系统 MemTotal:8008812 kB MemFree:7416404 kB MemAvailable:7537332 kB
Docker容器 MemTotal:8008812 kB MemFree:7318052 kB MemAvailable:7498764 kB

同样,我想获得CPU限制:

grep -c ^processor /proc/cpuinfo

结果是:

主机系统 4
Docker Image 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 个答案:

答案 0 :(得分:1)

更新

这是有效的答案:https://stackoverflow.com/a/41827812/3209177

我刚刚找到了这个答案:

Limit memory on a docker container doesn't work

我打算尝试一下,然后带着我的观察回来。

答案 1 :(得分:1)

我尝试这个命令这个我的docker主机它工作 docker run -it -d -m 100M --cpuset-cpus ='0'--cpus = 1 --cpu-shares = 256 --name testing ubuntu / bin / bash

docker stats testing

相关问题