无法加载侦听器:无法创建 unix 套接字 /var/run/docker.sock:是一个目录

无法加载侦听器:无法创建 unix 套接字 /var/run/docker.sock:是一个目录

Ubuntu 18.04

内核 4.15.0-39-通用 x86_64 GNU/Linux

我想要存档的是让 docker 在 IP 192.168.2.11 上打开一个 TCP 套接字。

所以我编辑了 docker 配置:

systemctl edit docker

终端图片 这就是我的 /etc/systemd/system/docker.service.d/.#override.conf 的样子e.

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://192.168.2.11:2375

然后我运行:

systemctl restart docker

我收到以下错误:

-- Unit docker.service has finished shutting down.
Nov 15 09:45:35 docker systemd[1]: Starting Docker Application Container Engine...
-- Subject: Unit docker.service has begun start-up
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit docker.service has begun starting up.
Nov 15 09:45:35 docker dockerd[27753]: Failed to load listeners: can't create unix socket /var/run/docker.sock: is a directory
Nov 15 09:45:35 docker systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Nov 15 09:45:35 docker systemd[1]: docker.service: Failed with result 'exit-code'.
Nov 15 09:45:35 docker systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit docker.service has failed.
--
-- The result is RESULT.

答案1

我花了大约一个小时试图找出原因,这完全是我自己的错误,因为我没有阅读错误消息。错误消息清楚地表明

无法创建 unix 套接字 /var/run/docker.sock: 是一个目录

我做的第一件事就是进入 root 权限。(如果您不喜欢这种方式,我宁愿不这样做。只需添加须藤在所有命令前面)

sudo su

我使用以下命令检查路径。

ls -la /var/run/docker.sock

这表明,这条路径实际上是目录.所以我删除了目录

rm -fr /var/run/docker.sock

然后我重新启动docker.service

systemctl edit docker

Docker启动,systemctl status docker的输出全部正常。

结论:如果您收到此错误消息,并在 docker.sock 上运行 ls 并且它看起来不像这样。然后删除该目录并重新启动 docker。

ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Nov 15 09:47 /var/run/docker.sock

相关内容