本文最后更新于:2025年8月14日 下午

Docker 创建的容器可以实现 CPU 资源物理隔离,本文记录实现方法。

简介

docker 容器构建的参数中有一个叫做 cpuset 可以用来隔离 cpu 使用资源。

官方文档:https://docs.docker.com/reference/compose-file/services/#cpuset

使用方法

构建容器时指定 cpuset 参数:

1
2
cpuset: "0-3" # 表示绑定物理核心 0-3(共 4 个核心)
cpuset: "0,3,5" # 表示绑定物理核心 0,3,5(共 3 个核心)
  • docker-compose 配置中
1
2
3
4
5
6
7
8
services:
server:
container_name: test
build:
context: .
image: myimage:v1.0.1
cpuset: "0,3,5,7,8"
restart: always
  • 在 Docker Run 命令中
1
2
3
4
5
6
docker run -d \
--name test \
--restart unless-stopped \
--cpuset-cpus="3,4" \
test_img
...

验证方法

这里在容器内部调用 htop 看到的仍然是宿主机所有的 cpu 资源,这是 Linux 内核行为,内核通过 cgroup 限制进程调度范围,实际调度只发生在指定核心,因此 htop 的结果无法验证该配置是否生效

方法一

1
grep Cpus_allowed_list /proc/self/status

输出:

1
0,3,5,7-8

方法二

stress 工具

1
2
apt install stress
stress -c 99

宿主机执行 htop

可以确认 cpu 资源隔离配置是否成功。

参考资料



文章链接:
https://www.zywvvd.com/notes/tools/docker/docker-cpuset-resource-separate/docker-cpuset-resource-separate/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

Docker 实现 CPU 核心隔离
https://www.zywvvd.com/notes/tools/docker/docker-cpuset-resource-separate/docker-cpuset-resource-separate/
作者
Yiwei Zhang
发布于
2025年8月13日
许可协议