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