Ubuntu中Docker报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock”错误解决办法
作者:m0_70877535
发现问题
在 Ubuntu 上运行 Docker 时,很多人都会遇到下面这个经典错误:
docker run hello-world
输出如下:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? Run 'docker run --help' for more information
一、问题现象
即使执行了:
sudo systemctl start docker sudo systemctl status docker
看到输出中显示:
Active: active (running)
但是执行任何 docker run 命令仍然报错:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
并且查看 socket 文件:
ls -l /var/run/docker.sock
结果是:
ls: 无法访问 '/var/run/docker.sock': 没有那个文件或目录
二、问题原因分析
Docker 客户端(docker 命令)是通过 **Unix Socket 文件 **/var/run/docker.sock 与后台服务 dockerd 通信的。
如果
/var/run/docker.sock不存在,客户端就无法与守护进程通信。这通常意味着 Docker 守护进程(dockerd)没有正确通过 systemd socket 激活。
在正常情况下,Docker 启动逻辑如下:
systemd → docker.socket (监听 /run/docker.sock)
↳ 激活 docker.service (启动 dockerd)
↳ 接管 /run/docker.sock然而,当系统中存在以下情况时,Socket 文件就无法生成:
dockerd没有被 systemd 通过 socket 激活;/run/docker.sock被残留文件占用;Docker 启动顺序出错(socket 先启动但 daemon 没接管);
/var/run未正确链接到/run;用户未加入
docker用户组。
三、完整解决步骤
以下步骤在 Ubuntu 20.04+、22.04+ 上验证有效。
停止所有与 Docker 相关的进程
sudo systemctl stop docker sudo systemctl stop docker.socket sudo pkill dockerd
确保全部停止:
ps -ef | grep dockerd
若仍有进程残留,手动 sudo kill -9 PID。
清理旧的 socket 文件
sudo rm -f /run/docker.sock sudo rm -f /var/run/docker.sock
检查 /var/run 是否是指向 /run 的符号链接:
ls -ld /var/run
应当显示:
lrwxrwxrwx 1 root root 4 ... /var/run -> /run
✅ 如果不是,请修复:
sudo ln -sf /run /var/run
重新加载 systemd 并启动服务
sudo systemctl daemon-reload sudo systemctl start docker.socket sudo systemctl start docker
检查 docker socket 是否生成
ls -l /run/docker.sock
正常情况下会看到:
srw-rw---- 1 root docker 0 11月 4 09:30 /run/docker.sock
说明 socket 已成功被 dockerd 接管。
测试运行 Hello World
sudo docker run hello-world
输出类似:
Hello from Docker! This message shows that your installation appears to be working correctly.
✅ 成功!
总结
到此这篇关于Ubuntu中Docker报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock”错误解决办法的文章就介绍到这了,更多相关Docker报错Cannot connect to the Docker daemon at unix内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
