如何解决 Cannot connect to the Docker daemon at 问题
问题描述
在使用 Docker 进行开发时,有时候会遇到连接 Docker 守护进程失败的问题,错误信息通常为 “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the Docker daemon running?”。这个错误通常发生在没有正确配置 Docker 或者权限不足的情况下。
内容分析
此错误的一些原因包括:
- The Docker daemon is not running - Docker 守护程序未运行。
- Docker doesn’t shutdown cleanly - Docker 无法完全关闭。
- Lack of root privileges to start the docker service - 缺少启动 docker 服务的 root 权限。
解决方法
方式三
执行命令:
vim /etc/sysconfig/docker
方式二(优先考虑)
- 查看
/var/run/docker.dock
文件是否变成目录,如果是就删除该目录
rm -rf /var/run/docker.sock/
- 重启 docker 服务
systemctl restart docker
# or
systemctl restart docker.service
方式一
- 检查 Docker 是否正在运行
systemctl status docker
如果 Docker 未运行,你可以使用以下命令启动 Docker 服务
sudo systemctl start docker
- 检查用户是否有权限连接到 Docker
如果 Docker 服务正在运行,接下来我们需要确保当前用户有权限连接到 Docker 守护进程。 Docker 守护进程使用 /var/run/docker.sock
文件进行通信,只有拥有相应权限的用户才能访问该文件。
我们可以通过将当前用户添加到 docker 用户组中来解决权限问题。执行以下命令将当前用户添加到 docker 用户组
sudo usermod -aG docker $USER
注意,添加用户到 docker 用户组后需要重新登录以更新用户组。
- 检查 Docker 守护进程的配置
首先,我们需要检查 /etc/docker/daemon.json
文件是否存在。如果不存在,可以创建一个新文件。使用以下命令来编辑或创建该文件
sudo vim /etc/docker/daemon.json
在编辑器中,你可以添加或修改 Docker 守护进程的配置
{"registry-mirrors":["https://registry.docker-cn.com"]}
- 重启 Docker 服务
使用以下命令重新启动 Docker 服务
sudo systemctl restart docker
现在,你应该能够成功连接到 Docker 守护进程了。可以尝试运行 docker version
命令来验证连接是否正常。
FAQ
某些版本的 docker 是没有/etc/sysconfig/docker
某些版本的 docker 是没有 /etc/sysconfig/docker
,这个配置文件的,所以需要做如下的配置操作
vim /lib/systemd/system/docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/docker
ExecStart=/usr/bin/dockerd $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
- 重启 docker
systemctl daemon-reload
systemctl restart docker