docker容器使用多少个CPU?

kev*_*kev 94 docker

假设我在一个生成多个进程的docker容器中运行多处理服务,docker会使用主机的所有/多个内核/ CPU还是只有一个?

BMi*_*tch 92

正如Charles所提到的,默认情况下都可以使用,或者您可以使用--cpuset-cpus参数限制每个容器.

docker run --cpuset-cpus="0-2" myapp:latest
Run Code Online (Sandbox Code Playgroud)

这会将容器限制为3个CPU(0,1和2).有关更多详细信息,请参阅docker run docs.


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

docker run --cpus 2.5 myapp:latest
Run Code Online (Sandbox Code Playgroud)

这会将容器限制在主机上的2.5核心.


最后,如果您在VM内运行docker,包括Docker for Mac,Docker for Windows和docker-machine,那些VM将具有与笔记本电脑本身分开的CPU限制.Docker在该VM内部运行,并将使用提供给VM本身的所有资源.例如,使用Docker for Mac,您可以使用以下菜单:

Docker for Mac高级设置

  • @MuhammadUmer 是的,与在一个 CPU 上运行多个进程相同。 (2认同)

arc*_*sin 7

默认情况下,您的主机VM可能只有一个核心。因此,您应该首先增加VM cpu计数,然后使用--cpuset-cpus选项增加docker核心。您可以使用以下命令删除docker default VM,然后创建另一个具有可选cpu计数内存大小的VM :

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default
Run Code Online (Sandbox Code Playgroud)

完成此步骤后,您可以在运行映像之前指定核心数。该命令将使用8个内核中的4个内核。

docker run -it --cpuset-cpus="0-3" your_image_name
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下命令检查映像中可用内核的数量:

nproc
Run Code Online (Sandbox Code Playgroud)