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

相关文章

  • CentOS7使用docker部署Apollo配置中心的实现

    CentOS7使用docker部署Apollo配置中心的实现

    这篇文章主要介绍了CentOS7使用docker部署Apollo配置中心的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 详解制作各种docker镜像

    详解制作各种docker镜像

    本篇文章主要介绍了制作各种docker镜像,详解的介绍了各种制作的docker镜像的方法,有兴趣的可以了解一下
    2017-05-05
  • Docker方式安装GitLab教程

    Docker方式安装GitLab教程

    在Docker容器中安装GitLab的步骤包括下载镜像、配置数据目录、启动容器、获取初始密码并设置管理员密码,GitLab镜像不包含邮件传输代理,需额外配置
    2025-03-03
  • docker如何对已经启动的容器添加目录映射(挂载目录)

    docker如何对已经启动的容器添加目录映射(挂载目录)

    当我们创建容器之后,不可避免会遇到修改配置文件的操作,下面这篇文章主要给大家介绍了关于docker如何对已经启动的容器添加目录映射(挂载目录)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 滚动 docker 中的 nginx 日志思路详解

    滚动 docker 中的 nginx 日志思路详解

    Nginx 自己没有处理日志的滚动问题,本文笔者介绍如何滚动运行在 docker 中的 nginx 日志文件,感兴趣的朋友一起看看吧
    2018-08-08
  • 解决docker中ifconfig不可用的问题

    解决docker中ifconfig不可用的问题

    这篇文章主要介绍了解决docker中ifconfig不可用的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用docker部署若依前后端分离项目全过程

    使用docker部署若依前后端分离项目全过程

    部署前端项目Docker变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,运维管理,这篇文章主要介绍了使用docker部署若依前后端分离项目的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • 前端转全栈必须要掌握的一些Docker知识

    前端转全栈必须要掌握的一些Docker知识

    对于长期深耕于浏览器环境的前端开发者而言,迈向全栈并非仅仅是技术栈的延伸,更是一次思维模式的根本性转变,这篇文章主要介绍了前端转全栈必须要掌握的一些Docker知识,需要的朋友可以参考下
    2026-03-03
  • Docker查看及修改Redis容器密码的实用指南

    Docker查看及修改Redis容器密码的实用指南

    在使用 Docker 部署 Redis 容器时,有时我们需要查看或修改 Redis 的密码,本文将详细介绍如何在 Docker 中查看和修改 Redis 容器的密码,帮助你更好地管理和维护你的 Redis 实例,需要的朋友可以参考下
    2024-07-07
  • Docker 容器全生命周期管理与运维命令实战演练

    Docker 容器全生命周期管理与运维命令实战演练

    本文将深入剖析 Docker 容器管理的二十余条核心命令,结合实际操作案例与执行结果,详细解读从容器创建、运行、调试到销毁的全过程,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论