`Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon `
这个错是docker的客户端连接dockerd(docker服务)时失败了。默认配置本地docker是使用docker.sock通讯的。
1. 检查docker服务没有启动。
这种情况简单,好判断。systemctl status docker 可查看dockerd的运行状态。 如果没有启动使用:systemctl start docker 即可启动。
2. 检查/var/run/docker.sock
2.1 误删除了 /var/run/docker.sock。
网上说使用 `systemctl restart docker` 重启dockerd会自动生成。实践发现这种方法根本不好使。docker.sock通讯在docker v1.13以后使用专门的服务管理:`docker.socket`,所以使用 `systemctl restart docker.socket` 重启它会自动生成新的docker.sock。
2.2 /var/run/docker.sock/ 是个目录,非正常的socket文件。
之前想启动多个dockerd实例,分别是 `docker.service`和`docker-alt.service`。又把新创建的服务`docekr-alt.service`删除了,当我使用`systemctl restart docker` 重启 `docker.service` 服务时,/run/docker.sock/ 会变成目录。【这里后来没有复现,不知道什么原因】
删掉 `/run/docker.sock/` 再执行 `systemctl restart docker` 始终生成的是目录`/run/docker.sock/`。
使用 `systemctl restart docker.socket` 后一切正常。