docker 容器为啥就只用一个CPU_mob64ca12d42833的技术博客_51CTO博客
Docker 容器 CPU 核心绑定 (cpuset) 和 CPU 份额 (cpu-shares) - 皇帽讲绿帽带法技巧 - 博客园
docker分配多个核_mob64ca12ecf3b4的技术博客_51CTO博客
前言
onlyoffice document server看到有大佬提供的镜像中有【开启多线程核心】这一项。然后研究如何实现。
结果
通过查询资料、使用DeepSeek、Chatgpt三种方法并没有发现【多线程核心】的相关配置和实现。所以个人猜测本质应该是底层操作系统的设置或者Docker的底层调用。
还需要再研究研究,是否可以通过nodejs进行底层cpu+线程数调用。
实验
在docker命令中可以为容器分配使用的cpu,注意这里是多cpu并非多核心,参数为:--cpuset-cpus="0,1"
cpuset
- 用于限制容器运行在哪些 CPU 核心上。
- 通过
--cpuset-cpus
参数指定 CPU 核心编号,例如0,1
表示绑定到 CPU 0 和 CPU 1。- 适用于 NUMA 拓扑结构的多核服务器,确保高性能容器运行在指定核心上,避免资源争抢。
docker run -it --cpuset-cpus="0,1" ubuntu:latest
在容器中运行 lscpu 命令可以查看当前容器可用的CPU信息:
lscpu | grep "Core(s) per socket:"
Docker Compose中的多核分配
version: "3"
services:myservice:image: ubuntu:latestcommand: /bin/bashcpuset: "0,1"
在上述示例中,cpuset关键字的值与前面所述的--cpuset-cpus参数的用法相同。