docker 守护进程意外退出

mip*_*pnw 7 docker

Docker 无缘无故退出,我试图了解发生了什么。

现在 docker 守护进程是一个已加载的服务,处于非活动状态,退出状态为 0 SUCCESS。

$ systemctl status docker
? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-12-01 06:25:16 UTC;
     Docs: https://docs.docker.com
 Main PID: 2218 (code=exited, status=0/SUCCESS)
Run Code Online (Sandbox Code Playgroud)

查看 docker 日志,发生这种情况是因为它处理了“终止”信号:

$ journalctl -u docker.service | tail -25
Nov 30 18:30:21 ip-10-38-4-210 dockerd[2218]: time="2020-11-30T18:30:21.728694550Z" <redacted irrelevant>
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
Run Code Online (Sandbox Code Playgroud)

当时没有用户登录该主机,也没有用户明确终止 docker 守护进程。

  • 为什么会发生这种情况,哪些日志可以提供线索?
  • 我可以将 dockerd 配置为退出时自动重启吗?

这是 x86-64 上 Ubuntu 16.04.6 LTS 上的 Docker 版本 18.09.7(构建 2d0083d)。

Unix.stackexchange在这里询问与 systemd 的关系

BMi*_*tch 5

Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Run Code Online (Sandbox Code Playgroud)

此时,systemd向docker发送了停止请求。

Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Run Code Online (Sandbox Code Playgroud)

Docker 收到停止请求并正常退出。

Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
Run Code Online (Sandbox Code Playgroud)

Systemd 现在报告停止已完成。这 10 秒可能是因为容器没有正常处理命令docker container stop并在 10 秒后被杀死,然后又一秒完成处理请求。

因此,从提供的日志来看,dockerd 守护进程正在按请求运行,您应该检查发送命令的内容systemctl stop docker

我可以将 dockerd 配置为在退出时自动重新启动吗?

dockerd 不控制 systemd,systemd 控制 dockerd,因此您需要从 systemd 方面解决问题。


在这种特定情况下,告诉 systemd 停止 docker 服务的事情似乎是 Ubuntu 无人值守更新服务应用更新了 Ubuntu 版本的 containerd 软件包。

https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514

我建议的修复方法是从上游 Docker 存储库安装 docker,该存储库似乎不存在此问题:

https://docs.docker.com/engine/install/ubuntu/