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

在 Docker 或更广泛的 Linux 容器环境中,vCPU(Virtual CPU)通常指的是线程(Thread)的数量,而不是物理核心(Core)的数量。


一、基本概念区分:

概念 含义说明
物理CPU(Socket) 实际插在主板上的物理处理器。
物理核心(Core) 每个物理CPU内部的独立处理单元。
线程(Thread) / 逻辑核心(Logical Core) 利用超线程技术(Hyper-Threading),一个物理核心可以表现为两个或更多逻辑核心(即线程)。

二、Docker 中 vCPU 的定义

当你使用 Docker 的资源限制功能时,例如:

docker run --cpus=2 ...

这表示容器最多可以使用 2 个 vCPU 的 CPU 时间。

在 Docker 中:

  • vCPU = 1 个线程(逻辑核心)
  • 所以如果你设置 --cpus=2,意味着该容器最多可以占用 2 个逻辑核心 的 CPU 时间。
  • 这并不保证是 2 个物理核心,因为现代 CPU 大多支持超线程。

三、举例说明

假设你有一台服务器:

  • 1 个物理 CPU(Socket)
  • 4 核心(Cores)
  • 支持超线程(每个核心 2 线程)
  • 总共 8 个逻辑核心(Threads)

你可以这样限制容器:

docker run --cpus=2 my_container

这个容器最多可以使用相当于 2 个线程 的 CPU 资源。


四、Kubernetes 中的 CPU 单位也是类似的

在 Kubernetes 中:

resources:
  limits:
    cpu: "2"

这里的 2 CPU 也是一个抽象单位,等价于 2 个 vCPU,也就是 2 个线程的时间。


五、总结

术语 表示内容
vCPU in Docker/Kubernetes 代表的是 逻辑核心(线程) 的数量
1 vCPU = ? ≈ 1 个线程(逻辑核心)
不是 物理核心或整个物理 CPU

如需查看主机上实际的 CPU 架构信息(核心数、线程数等),可使用如下命令:

lscpu

或者:

nproc

来查看可用的逻辑核心总数。


如有进一步关于 CPU 配额、限制或调度的问题,也欢迎继续提问!

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