由于 modprobe 错误,Docker 服务无法再启动

由于 modprobe 错误,Docker 服务无法再启动

我刚刚在运行 docker 的服务器上遇到了一些问题,我自己无法修复。我使用的是 Docker 版本 18.09.0,构建版本 4d60db4 和 Ubuntu 16.04.5 LTS。白天我注意到我的 docker 应用程序不可用,所以我检查了服务。当尝试使用 启动 docker 服务时service docker start,我得到了A dependency job for docker.service failed. See 'journalctl -xe' for details。当检查 journalctl 时,我得到了以下输出:

systemd[1]: Starting Docker Application Container Engine...
    -- Subject: Unit docker.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit docker.service has begun starting up.
systemd[1]: Starting containerd container runtime...
    -- Subject: Unit containerd.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit containerd.service has begun starting up.
modprobe[811]: modprobe: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin file '/lib/modules/4.4.0/modules.builtin.bin'
modprobe[811]: modprobe: FATAL: Module overlay not found in directory /lib/modules/4.4.0
systemd[1]: containerd.service: Control process exited, code=exited status=1
systemd[1]: Failed to start containerd container runtime.
    -- Subject: Unit containerd.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit containerd.service has failed.
    --
    -- The result is failed.
systemd[1]: Dependency failed for Docker Application Container Engine.
    -- Subject: Unit docker.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit docker.service has failed.
    --
    -- The result is dependency.
systemd[1]: docker.service: Job docker.service/start failed with result 'dependency'.
systemd[1]: containerd.service: Unit entered failed state.
systemd[1]: containerd.service: Failed with result 'exit-code'.
systemd[1]: Stopped Docker Application Container Engine.
    -- Subject: Unit docker.service has finished shutting down
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit docker.service has finished shutting down.

我尝试重启服务器多次。系统上的其他一切都运行正常(邮件、备份、网站)。

我没有使用过 modprobe 或任何情况下的错误,因此任何详细的帮助都将不胜感激。

提前致谢

答案1

今天在 Debian 9 上将 docker-ce 升级到 18.09.0 版本后,我遇到了同样的错误。我无法为您提供该版本的解决方案,但返回到 18.06.1 版本确实可以重新启动。对于 Ubuntu,这应该是:

sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

18.09.0 版本对你有用吗?升级后我的安装就崩溃了。

编辑: GitHub 上实际上有一份与此问题相关的报告。 https://github.com/containerd/containerd/issues/2772

似乎 newcontainerd正在尝试加载覆盖模块,即使它已经加载。覆盖模块已加载到我的系统上,但我找不到该文件/lib/modules/

答案2

查看您是否有该文件(在原版 Ubuntu 16.04 上您肯定应该有):

find /lib/modules -name "*overlay*"

你能自己装载吗?

# modprobe overlay
# echo $?
0

# lsmod | grep overlay
overlay                49152  0

我不知道为什么 docker 无法加载它...但如果它很智能,如果你已经加载了它,它就不需要加载它了。所以如果你可以自己加载它,请尝试将其添加到/etc/modules启动时加载(重启后再次使用 lsmod 验证)。

echo overlay >> /etc/modules

相关内容