我按照 docker 说明安装和验证 docker 安装(来自 http://docs.docker.com/linux/step_one/)。
我在 2 台 Ubuntu 14.04 机器上试过,在启动 docker 守护进程时我在两台机器上都遇到了以下错误:
$ sudo docker daemon
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
INFO[0000] [graphdriver] using prior storage driver "aufs"
INFO[0000] Option DefaultDriver: bridge
INFO[0000] Option DefaultNetwork: bridge
WARN[0000] Running modprobe bridge nf_nat br_netfilter failed with message: modprobe: WARNING: Module br_netfilter not found. , error: exit status 1
INFO[0000] Firewalld running: false
WARN[0000] Your kernel does not support cgroup memory limit: mountpoint for memory not found
WARN[0000] mountpoint for cpu not found
FATA[0000] Error starting daemon: Devices cgroup isn't mounted
我感谢任何帮助解决这个问题。
我通过手动启动 docker deamon 解决了这个问题:
sudo service docker start
注意:看起来这个问题只存在于 Ubuntu 14.04 及更早版本中。较新的 Ubuntu 版本不需要这个。
尝试以下操作:
以具有 sudo 权限的用户身份登录 Ubuntu。
编辑 /etc/default/grub 文件。
设置 GRUB_CMDLINE_LINUX 值如下:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
保存并关闭文件。
更新 GRUB。
$ sudo update-grub
重启系统。
有些人报告说重启 docker 守护进程有效:
sudo systemctl restart docker
如上所述,较新的 docker 文档在新的 Docker 版本中没有提到这一点.
更新
这适用于 Ubuntu 14.04 或更早版本的一些人:
sudo apt-get install cgroup-lite
可能需要包裹:
apt-get install aufs-tools
apt-get install cgroup-lite
我刚刚在 Fedora 31 上遇到了这个问题。here 中描述的解决方案是将
systemd.unified_cgroup_hierarchy=0
附加到 GRUB_CMDLINE_LINUX
中的 /etc/sysconfig/grub
var。
(就我而言,
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet systemd.unified_cgroup_hierarchy=0"
)
然后运行
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
并重新启动。
我只需要从
cgroup
中删除所有/etc/fstab
的安装,我解决了Devices cgroup isn't mounted
的问题。我认为 Module br_netfilter not found
只是一个警告,并不会阻止 Docker 启动。但是您可以通过安装来修复它:
apt-get install linux-image-3.19.0-33-generic linux-image-extra-3.19.0-33-generic
之后你必须重新启动。
需要“额外”,因为 aufs 不再包含在 Ubuntu 的基本映像中。
就我而言,我不需要安装或配置任何新东西。在此故障之前,Docker 运行良好。 尝试重新启动 docker(例如
systemctl restart docker
)。
如果失败,请关闭并冷启动机器。确保 docker 正在运行。
在正常运行 129 天后,我的 docker 进入了一个奇怪的、糟糕的状态。
通过运行以下命令检查 cgroup 是否已安装:
$ 猫 /proc/self/cgroup | grep 设备
如果您看到如下所示的输出:
1:name=systemd:/user/docker/12345.devices
然后 cgroups 已经安装,你可能有不同的问题导致错误。
如果您在运行上述命令时没有看到任何输出,那么您需要手动挂载 cgroups。为此,请运行以下命令:
$ sudo mkdir /sys/fs/cgroup/设备 $ sudo mount -t cgroup -o 设备设备 /sys/fs/cgroup/devices
挂载 cgroups 后,使用以下命令重启 Docker 服务:
$ sudo systemctl 重启 docker