Ubuntu中Docker报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock”错误解决办法

 更新时间:2026年04月14日 10:35:13   作者:m0_70877535  
这篇文章主要介绍了Ubuntu中Docker报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock”错误解决办法的相关资料,这个问题通常表示Docker 守护进程未运行或者当前用户没有权限访问Docker守护进程,需要的朋友可以参考下

发现问题

在 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 文件就无法生成:

  1. dockerd 没有被 systemd 通过 socket 激活;

  2. /run/docker.sock 被残留文件占用;

  3. Docker 启动顺序出错(socket 先启动但 daemon 没接管);

  4. /var/run 未正确链接到 /run

  5. 用户未加入 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解在Docker容器中运行Spring Boot应用

    详解在Docker容器中运行Spring Boot应用

    本文将以一个最简单的Spring Boot开发的Web应用为例,讲解如何将其容器化运行。本文的重点是构建Docker镜像、运行Docker容器。
    2017-06-06
  • Docker 修改文件是否需要重启(命令详解)

    Docker 修改文件是否需要重启(命令详解)

    这篇文章主要介绍了Docker 修改文件是否需要重启(命令详解)的相关资料,需要的朋友可以参考下
    2016-11-11
  • docker-compose部署nacos 2.2.3的详细过程

    docker-compose部署nacos 2.2.3的详细过程

    这篇文章主要介绍了docker-compose部署nacos 2.2.3的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • Docker目录映射方式

    Docker目录映射方式

    总结了一些常用的Docker命令,包括查看、停止、重启和删除容器等操作,帮助用户更好地管理容器
    2024-11-11
  • Docker网络原理及自定义网络详细解析

    Docker网络原理及自定义网络详细解析

    一般使用自定义网络,自定义网络使用network创建,创建时可以指定子网网段及网关等信息,在创建并启动容器时指定使用的网络,今天通过本文给大家介绍Docker网络原理及自定义网络的相关知识,感兴趣的朋友一起看看吧
    2021-05-05
  • docker-compose安装elk实践

    docker-compose安装elk实践

    文章内容涉及多个配置文件的设置,包括docker-compose.yml、elasticsearch.yml、kibana.yml和logstash.conf等,用于配置Elasticsearch、Kibana和Logstash的参数和设置
    2026-01-01
  • Docker buildx构建多平台镜像并推送到私有仓库的方法

    Docker buildx构建多平台镜像并推送到私有仓库的方法

    这篇文章主要介绍了Docker buildx构建多平台镜像并推送到私有仓库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 如何使用 docker 搭建一个 mysql 服务

    如何使用 docker 搭建一个 mysql 服务

    这篇文章主要介绍了如何使用 docker 搭建一个mysql服务,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • docker容器如何配置hosts文件问题

    docker容器如何配置hosts文件问题

    这篇文章主要介绍了docker容器如何配置hosts文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 分享Ubuntu19无法安装docker源问题

    分享Ubuntu19无法安装docker源问题

    这篇文章主要介绍了Ubuntu19无法安装docker源问题,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11

最新评论