Docker 容器中的内存限制和 CPU 限制
Memory Limit and CPU Limit in Docker Container
更新:
在 Whosebug 上发现了很多关于这个主题的问题和讨论。尽管它们被标记为已接受并由成千上万的用户开始,但它们似乎不是这里的正确答案。
我运行一个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 图片 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
这个数字大于主机系统的实际内存。
有没有办法验证容器中是否正确设置了资源限制?如何从容器中找到资源限制信息?感谢任何建议。
更新
这是有效的答案:
我刚找到这个答案:
Limit memory on a docker container doesn't work
我要尝试一下,然后再回来观察。
我在我的 docker 正在工作的主机上尝试这个命令
docker run -it -d -m 100M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 --name testing ubuntu /bin/bash
更新:
在 Whosebug 上发现了很多关于这个主题的问题和讨论。尽管它们被标记为已接受并由成千上万的用户开始,但它们似乎不是这里的正确答案。
我运行一个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 图片 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
这个数字大于主机系统的实际内存。
有没有办法验证容器中是否正确设置了资源限制?如何从容器中找到资源限制信息?感谢任何建议。
更新
这是有效的答案:
我刚找到这个答案:
Limit memory on a docker container doesn't work
我要尝试一下,然后再回来观察。
我在我的 docker 正在工作的主机上尝试这个命令
docker run -it -d -m 100M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 --name testing ubuntu /bin/bash