一个泊位容器使用多少个 CPU?

假设我在一个产生多个进程的 docker 容器中运行一个 多重处理服务,那么 docker 将使用主机的所有/多个核心/CPU 还是只使用一个?

133085 次浏览

正如 Charles 所提到的,默认情况下,可以使用所有内容,也可以使用 --cpuset-cpus参数对每个容器进行限制。

docker run --cpuset-cpus="0-2" myapp:latest

这会将容器限制为3个 CPU (0、1和2)。


限制容器的 CPU 使用率的首选方法是对 CPU 进行小数限制:

docker run --cpus 2.5 myapp:latest

这将把容器限制在主机上的2.5个内核。


最后,如果你在一个虚拟机中运行 Docker,包括 Mac 版的 Docker,Windows 版的 Docker,以及 Docker-machine,这些虚拟机的 CPU 限制将独立于你的笔记本电脑本身。Docker 运行在该 VM 内部,并将使用分配给 VM 本身的所有资源。例如,在 Docker for Mac 中,你可以看到以下菜单:

Docker for Mac Advanced settings

也许您的主机 VM 默认只有一个内核。因此,您应该先增加您的 VM CPU 计数,然后使用 < em > —— cpuset-cpus 选项来增加您的码头核心。你可以使用以下命令删除 docker 默认 VM,然后你可以创建另一个具有可选 CPU 计数记忆大小的 VM:

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default

在此步骤之后,您可以在运行映像之前指定核的数量。此命令将使用总共8个核中的4个核。

docker run -it --cpuset-cpus="0-3" your_image_name

然后你可以使用以下命令检查图像中可用的核心数量:

nproc