在 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_us和nr_cpus的处理,都是基于逻辑 CPU 的。
如有你的具体环境(例如是否启用了超线程、是在裸机还是虚拟机中运行 Docker),我可以帮你更精确地解释。
云计算HECS