docker vcpu 指的是核心还是线程数目?

在 Docker 或更广泛的 Linux 容器环境中,提到的 vCPU(Virtual CPU) 通常指的是 逻辑 CPU(Logical Processor),也就是操作系统看到的一个“可调度单元”,它既可以是物理核心(core),也可以是超线程(Hyper-Threading)产生的线程


🧠 总结:

Docker 中的 vCPU 指的是逻辑 CPU,即线程的数量,不是物理核心数。也就是说,1 个 vCPU = 1 个逻辑处理器(可能是物理核心,也可能是超线程)。


📌 举个例子:

假设你有一个 CPU 是 Intel i7,4 核,支持超线程,每个核有 2 个线程:

  • 物理核心:4 个
  • 逻辑核心 / 线程数:8 个

那么在这台机器上运行容器时:

  • 如果你给容器分配 --cpus="2",就表示分配了 2 个 vCPU,对应两个逻辑处理器(可以是任意两个线程)。
  • 它不保证是 2 个物理核心,而是 2 个调度单元。

🔧 Docker 中限制 vCPU 的方式:

你可以通过以下参数控制容器使用的 CPU 资源:

✅ 按照 vCPU 数量限制(推荐):

docker run --cpus="2" ...

这表示容器最多使用 2 个 vCPU(即 2 个逻辑处理器)。

✅ 按照 CPU 核心绑定(cgroups 方式):

docker run --cpuset-cpus="0-3" ...

这表示容器只能使用编号为 0~3 的逻辑 CPU。


⚠️ 注意事项:

  • Docker 默认不限制 CPU 使用,容器可以使用所有可用 CPU 资源。
  • 如果你在 Kubernetes 或云平台上配置 CPU 资源限制(如 cpu: "2"),那也是基于 vCPU 的概念,单位是“核”(Core),但其实是逻辑核(线程)。

📚 参考资料:

  • Docker 官方文档 – Resource constraints
  • Linux 内核调度机制中对 cfs_quota_usnr_cpus 的处理,都是基于逻辑 CPU 的。

如有你的具体环境(例如是否启用了超线程、是在裸机还是虚拟机中运行 Docker),我可以帮你更精确地解释。

未经允许不得转载:云计算HECS » docker vcpu 指的是核心还是线程数目?