现象:

启动容器时报错

Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown

这个错误通常出现在 Docker 运行时,表示 cgroup 相关的挂载点不存在,可能是由于系统未正确配置 cgroups 所致。

可能的原因和解决方案

1. 确保 cgroup 相关的文件系统已挂载

先检查 cgroup 是否被正确挂载:

mount | grep cgroup

如果没有 cgroup 相关的挂载点,手动挂载:

sudo mount -t cgroup2 none /sys/fs/cgroup

如果你的系统使用的是 cgroup v1,可以尝试:

sudo mount -t cgroup none /sys/fs/cgroup

2. 重新加载 cgroup 配置

sudo systemctl daemon-reexec
sudo systemctl restart docker

3. 检查内核参数

Docker 需要 cgroup,检查是否启用了 cgroup

grep -i cgroup /proc/filesystems

如果没有输出,可能需要加载 cgroup 相关模块:

sudo modprobe cgroup

4. 启用 cgroup 并重启(适用于 Ubuntu/Debian)

如果你使用的是 Ubuntu/Debian,可以尝试:

sudo mkdir -p /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd systemd /sys/fs/cgroup/systemd
sudo systemctl restart docker

5. 确保 cgroup_enable=memory(适用于部分 Linux 发行版)

某些 Linux 发行版默认未启用 memory cgroup,可以尝试:

sudo grubby --update-kernel=ALL --args="cgroup_enable=memory swapaccount=1"
sudo reboot

然后再次尝试启动 Docker。