Docker卡在"activating"状态

4

某种原因,重启我的一台服务器后,Docker 变得无法使用。以下是正在进行的完整引导的全部内容。与我另一台机器的引导不同,在那里可以看到 4 条更多的日志行:

Jul 22 14:39:59 Ubuntu-1804-bionic-64-minimal dockerd[26234]: time="2019-07-22T14:39:59.791008126+02:00" level=info msg="Docker daemon" commit=0dd43dd graphdriver(s)=o
Jul 22 14:39:59 Ubuntu-1804-bionic-64-minimal dockerd[26234]: time="2019-07-22T14:39:59.791131397+02:00" level=info msg="Daemon has completed initialization"
Jul 22 14:40:00 Ubuntu-1804-bionic-64-minimal dockerd[26234]: time="2019-07-22T14:40:00.944885752+02:00" level=info msg="API listen on /var/run/docker.sock"
Jul 22 14:40:00 Ubuntu-1804-bionic-64-minimal systemd[1]: Started Docker Application Container Engine.

我希望知道有哪些方面可以检查,以找出我的Docker引擎为什么无法启动完成。请不要告诉我重新安装Docker这一选项,除非可以保留已存在的容器。

Jul 22 18:39:17 srv4 systemd[1]: Starting Docker Application Container Engine...
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.634630237+02:00" level=info msg="systemd-resolved is running, so using resolvconf: /run/systemd/resolve/resolv.conf"
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.675035398+02:00" level=info msg="parsed scheme: \"unix\"" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.675056920+02:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.675512905+02:00" level=info msg="parsed scheme: \"unix\"" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.675523205+02:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691598560+02:00" level=info msg="ccResolverWrapper: sending new addresses to cc: [{unix:///run/containerd/containerd.sock 0  <nil>}]" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691639221+02:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691650622+02:00" level=info msg="ccResolverWrapper: sending new addresses to cc: [{unix:///run/containerd/containerd.sock 0  <nil>}]" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691675127+02:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691705528+02:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc42073f800, CONNECTING" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.691712378+02:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc4207d4d80, CONNECTING" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.701635863+02:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc42073f800, READY" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.701638953+02:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc4207d4d80, READY" module=grpc
Jul 22 18:39:18 srv4 dockerd[1123]: time="2019-07-22T18:39:18.775587750+02:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
Jul 22 18:39:19 srv4 dockerd[1123]: time="2019-07-22T18:39:19.150807807+02:00" level=info msg="Graph migration to content-addressability took 0.00 seconds"
Jul 22 18:39:19 srv4 dockerd[1123]: time="2019-07-22T18:39:19.151005388+02:00" level=warning msg="Your kernel does not support swap memory limit"
Jul 22 18:39:19 srv4 dockerd[1123]: time="2019-07-22T18:39:19.151039801+02:00" level=warning msg="Your kernel does not support cgroup rt period"
Jul 22 18:39:19 srv4 dockerd[1123]: time="2019-07-22T18:39:19.151046890+02:00" level=warning msg="Your kernel does not support cgroup rt runtime"
Jul 22 18:39:19 srv4 dockerd[1123]: time="2019-07-22T18:39:19.151466840+02:00" level=info msg="Loading containers: start."

非常感谢您的帮助和提示!


1
你是否按照 Docker 守护进程的故障排除步骤进行操作?https://docs.docker.com/config/daemon/ 如果没有,请仔细阅读此文档。 - mchawre
2个回答

6
我们刚刚遇到了与Docker类似的问题;systemctl status docker显示“正在加载,激活”并挂起。所有Docker命令,如docker psdocker images都挂起(你只能使用ctrl-c来中止它们;否则它们将永远挂起)。无法通过kill -9终止与Docker相关的任何进程,也不能克隆运行Docker的虚拟机。在此期间,系统reboot也无法成功关闭Docker服务(等待了一分钟,然后强制关闭了发生这种情况的虚拟机)。
最后,解决方案如下:
  • 我们禁用了Docker服务systemctl disable docker,以便在重新启动之前有一些缓冲时间
  • dockerd --debug显示Docker处于某种循环状态,正在重启其中一个容器
  • 文件夹/var/lib/docker包含了所有容器;在我们的情况下,删除所有容器(包括有问题的容器)并不是一个问题,我们进行了这个步骤
  • 在此步骤之后,systemctl start docker成功(→“激活”),但像docker ps这样的命令却无法运行,假装服务已经停止了
  • 我们重新启动了机器,最终得到了一个干净、正常运行的Docker服务
我希望这可以帮助其他一些遇到“激活”Docker问题的人。
PS> 我们推测问题可能是在两个虚拟机上初始化Docker Swarm时出现,可能涉及损坏的IP(两个虚拟机上的IP相同),但不确定...

3

你的Docker守护进程可能出了一些问题,请按照这里提供的Docker守护进程故障排除步骤进行操作。

尝试以下操作:

  • 手动在前台模式下运行docker守护进程dockerd,它将在屏幕上打印所有守护程序日志。

  • 以调试模式运行docker守护进程。dockerd --debug 还有其他方法,请查看此处

  • 强制docker守护进程打印堆栈跟踪。sudo kill -SIGUSR1 $(pidof dockerd) 请查看此处获取更多信息。

这些步骤将为您的系统提供更清晰的错误信息。

希望这能帮到您。


sudo kill -SIGUSR1 $(pidof dockerd) 没有给我任何输出,进程仍在运行。 - milovanderlinden
好的,dockerd --debug 可以工作。我可以看到它加载了一个 isRunning:false 的容器,然后尝试加载另一个 isRunning:true 的容器,似乎停在那里了。 - milovanderlinden
无论你得到了什么日志或堆栈跟踪信息,请通过为Docker打开一个Github问题或将这些日志粘贴到Docker Slack频道中来发布这些日志。它们一定会对你有所帮助。 - mchawre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接