systemctl slice配置docker最大占用cpu 内存

Docker 全局资源限制配置指南

1. 创建 systemd Slice

创建文件 /etc/systemd/system/docker_limit.slice

[Unit]
Description=Docker global resource slice

[Slice]
CPUAccounting=true
MemoryAccounting=true
CPUQuota=360%
MemoryHigh=12G
MemoryMax=14.4G

执行:

sudo systemctl daemon-reload
sudo systemctl enable --now docker_limit.slice

2. 配置 Docker 守护进程

编辑 /etc/docker/daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "cgroup-parent": "docker_limit.slice"
}

执行:

sudo systemctl restart docker

3. 重启已有容器

无需重建镜像,直接重启即可迁移到新 slice:

docker restart <容器ID或名称>

4. 验证配置生效

# 获取容器 PID
PID=$(docker inspect -f '{{.State.Pid}}' <容器ID>)
# 查看 cgroup 路径
cat /proc/$PID/cgroup

正常输出应包含:0::/docker_limit.slice/docker-<容器ID>.scope


注意事项

  • 驱动匹配:必须确认 docker infoCgroup Driversystemd,否则 slice 不生效。
  • Slice 状态:若报 invalid slice name,请检查 systemctl is-active docker_limit.slice 是否为 active
  • 重启生效:全局配置改完后必须 restart docker;旧容器必须执行 restart 才会进入新 slice。
  • 路径格式daemon.json 中的 cgroup-parent 必须带前导斜杠(/docker_limit.slice)。
  • 资源换算CPUQuota 按核数×90%计算(如4核设360%),内存按总容量×90%设置。
posted @ 2026-09-10 16:27  Hey,Coder!  阅读(4)  评论(0)    收藏  举报