运维 | 如何解决“Docker daemon at unix:///var/run/docker.sock. Is the d”问题 | Docker

2023年 10月 6日 73.9k 0

运维 | 如何解决“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the d”问题 | Docker

问题描述

在使用 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/
    

    2. 重启 docker 服务

    systemctl restart docker
    // or
    systemctl restart docker.service
    

    方式一

  • 检查 Docker 是否正在运行
  • systemctl status docker
    

    如果 Docker 未运行,你可以使用以下命令启动 Docker 服务

    sudo systemctl start docker
    

    2. 检查用户是否有权限连接到 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"]}
    

    4. 重启 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
    

    2. 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
    

    3. 重启docker

    systemctl daemon-reload
    systemctl restart docker
    

    参考文献

    • 关于docker启动失败问题处理
    • Cannot Connect to the Docker Daemon at ‘unix:///var/run/docker.sock’ 出坑方法,已经解决了

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论