systemd 不会停止 Docker 应用容器引擎

systemd 不会停止 Docker 应用容器引擎

问题:每次我重新启动或关闭时,由于 systemd 尝试停止 Docker 应用程序引擎,我都必须等待任意分钟。

系统:

  • 联想 Thinkpad x260 上的 xubuntu 18.04
  • DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
  • 通过 apt 安装 docker
  • docker --version给出Docker version 18.09.0-ce-tp5, build 9eb3d36
  • systemctl --version给出systemd 237 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid
  • 在关闭请求时没有容器正在运行。我事先明确停止并删除了它们(docker container ls --all什么也没显示)。

行为:单击“关机”或“重启”按钮后,GUI 关闭并显示带有旋转图标的 xubuntu 徽标。按Esc键,我受到了 systemd 服务状态屏幕的欢迎。只出现了 2-3 行(如下图所示),然后我必须等待任意长的时间(主动观察到 1 分钟到 25 分钟之间的值)。因为我无法确保 systemd 会很快终止,所以我通常使用硬件按钮关闭我的机器。出现此问题是因为我的系统上安装了 docker。

systemd 消息的照片

[ OK ] Started Show Plymouth Power Off Screen.
[   *] A stop job is running for Docker Application Container Engine (14s / no limit)[ OK ] Started Show Plymouth Power Off Screen.
[ ** ] A stop job is running for Docker Application Container Engine (24min 27s / no limit)

问题:我怎样才能让docker正常停止?

答案1

我偶尔会遇到这个问题,我不确定为什么docker会挂起。但我发现docker-ce部署的服务文件中明确将超时设置为无限制:

$ grep Timeout /lib/systemd/system/docker.service 
TimeoutSec=0

为了避免长时间挂起,我TimeoutStopSec在覆盖中设置了参数:

$ sudo systemctl edit docker.service

添加以下行:

[Service]
TimeoutStopSec=300

然后重新加载:

$ sudo systemctl daemon-reload

相关内容