我已经使用 Docker 有一段时间了,我已经安装了 docker 并使用启动了一个容器
docker run -it --cpuset-cpus=0 ubuntu
Run Code Online (Sandbox Code Playgroud)
当我登录 docker 控制台并运行时
grep processor /proc/cpuinfo | wc -l
Run Code Online (Sandbox Code Playgroud)
它显示了 3,这是我在主机上拥有的核心数。
关于如何将资源限制到容器以及如何验证限制的任何想法?
docker inspect <container_name>
Run Code Online (Sandbox Code Playgroud)
将提供启动的容器的详细信息,您必须检查其中的“CpusetCpus”,然后您才能找到详细信息。
容器并不是完整的虚拟机。某些内核资源仍将像在主机上一样显示。
在这种情况下,--cpuset-cpus=0修改容器 cgroup 有权访问的资源(在/sys/fs/cgroup/cpuset/cpuset.cpus. 不是VM和容器中的内容/proc/cpuinfo。
stress-ng验证的一种方法是在容器中运行该工具:
使用 1 个 cpu 将固定在 1 个核心(使用 1 / 3 个核心,100% 或 33% 取决于您使用的工具):
docker run --cpuset-cpus=0 deployable/stress -c 3
Run Code Online (Sandbox Code Playgroud)
这将使用 2 个核心(2 / 3 个核心,200%/66%):
docker run --cpuset-cpus=0,2 deployable/stress -c 3
Run Code Online (Sandbox Code Playgroud)
这将使用 3 个(3 / 3 核,300%/100%):
docker run deployable/stress -c 3
Run Code Online (Sandbox Code Playgroud)
内存限制是另一个未出现在内核统计信息中的区域
$ docker run -m 64M busybox free -m
total used free shared buffers cached
Mem: 3443 2500 943 173 261 1858
-/+ buffers/cache: 379 3063
Swap: 1023 0 1023
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17317 次 |
| 最近记录: |