推荐使用systemd驱动,因其与systemd init系统深度集成,避免双管理器导致的资源统计不一致和调度冲突,提升Kubernetes集群稳定性。
在 docker 中,通过 /etc/docker/daemon.json 设置默认 cgroups 驱动,核心是配置 cgroup-driver 字段,且该值必须与宿主机上运行的 systemd(或 cgroupfs)实际使用的驱动一致,否则 docker 服务将无法启动。
确认宿主机当前 cgroups 驱动
运行以下命令查看系统实际使用的 cgroup 版本和驱动:
cat /proc/1/cgroup
若路径中含 /sys/fs/cgroup/systemd 或看到大量 0::/ 开头的条目(cgroup v2),通常表示使用 systemd 驱动;若为 /sys/fs/cgroup/cpu 等多挂载点(cgroup v1),常见于 cgroupfs 驱动。更直接的方式是检查 kubelet(如已安装)或运行:
systemctl show --property=DefaultController --value
输出 systemd 表示推荐用 systemd 驱动;若为空或 cgroupfs,则倾向 cgroupfs。
编辑 daemon.json 指定驱动
在 /etc/docker/daemon.json 中添加或修改 cgroup-driver 字段:
{
"cgroup-driver": "systemd"
}
可选值只有两个:"systemd" 或 "cgroupfs",注意大小写和引号。不要写成 systemd_driver 或漏掉引号。
如果文件不存在,可新建;若已有其他配置(如 registry-mirrors),确保 JSON 格式合法(逗号分隔、无尾逗号)。
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
重启 Docker 并验证
保存后执行:
sudo systemctl daemon-reloadsudo systemctl restart docker-
sudo docker info | grep "Cgroup Driver"—— 输出应为设定的驱动名
若启动失败(systemctl status docker 报错),常见原因是驱动不匹配,例如系统是 cgroup v1 但设了 "systemd",此时需改回 "cgroupfs" 或升级内核+启用 systemd cgroup 支持。
与 Kubernetes 集成时的注意事项
若运行 Kubernetes(尤其是 kubeadm 部署),kubelet 默认也使用 systemd 驱动。Docker 的 cgroup-driver 必须与 kubelet 的 --cgroup-driver 一致,否则节点无法 Ready。
检查 kubelet 驱动:
ps aux | grep kubelet | grep cgroup-driver
如不一致,需同步修改二者配置,否则 Pod 启动会卡在 ContainerCreating。


















