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

运维 | 如何解决"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权限。

解决方法

方式三

  1. vim /etc/sysconfig/docker

方式二(优先考虑)

  1. 查看 /var/run/docker.dock 文件是否变成目录,如果是就删除该目录
bash 复制代码
rm -rf /var/run/docker.sock/
  1. 重启 docker 服务
arduino 复制代码
systemctl restart docker
// or
systemctl restart docker.service

方式一

  1. 检查 Docker 是否正在运行
lua 复制代码
systemctl status docker

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

sql 复制代码
sudo systemctl start docker
  1. 检查用户是否有权限连接到 Docker

如果 Docker 服务正在运行,接下来我们需要确保当前用户有权限连接到 Docker 守护进程。 Docker 守护进程使用 /var/run/docker.sock 文件进行通信,只有拥有相应权限的用户才能访问该文件。

我们可以通过将当前用户添加到 docker 用户组中来解决权限问题。执行以下命令将当前用户添加到 docker 用户组

bash 复制代码
sudo usermod -aG docker $USER

注意,添加用户到 docker 用户组后需要重新登录以更新用户组。

  1. 检查 Docker 守护进程的配置

首先,我们需要检查 /etc/docker/daemon.json 文件是否存在。如果不存在,可以创建一个新文件。使用以下命令来编辑或创建该文件

bash 复制代码
sudo vim /etc/docker/daemon.json

在编辑器中,你可以添加或修改 Docker 守护进程的配置

json 复制代码
{"registry-mirrors":["https://registry.docker-cn.com"]}
  1. 重启 Docker 服务

使用以下命令重新启动 Docker 服务

复制代码
sudo systemctl restart docker

现在,你应该能够成功连接到 Docker 守护进程了。可以尝试运行 docker version 命令来验证连接是否正常。

FAQ

某些版本的docker是没有/etc/sysconfig/docker

某些版本的docker是没有 /etc/sysconfig/docker,这个配置文件的,所以需要做如下的配置操作

  1. vim /lib/systemd/system/docker.service
ini 复制代码
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/docker
ExecStart=/usr/bin/dockerd $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
  1. vim /etc/sysconfig/docker
ini 复制代码
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
  1. 重启docker

    systemctl daemon-reload
    systemctl restart docker

参考文献

相关推荐
Joren的学习记录19 分钟前
【Linux运维大神系列】Kubernetes详解3(kubeadm部署k8s1.23高可用集群)
linux·运维·kubernetes
Hellc00720 分钟前
Docker网络冲突排查与解决方案:完整指南
网络·docker·容器
hanyi_qwe36 分钟前
发布策略 【K8S (三)】
docker·容器·kubernetes
眠りたいです40 分钟前
Docker核心技术和实现原理第二部分:docker镜像与网络原理
运维·网络·docker·容器
2501_9335130444 分钟前
Linux下载离线rpm和依赖包的方法
linux·运维·服务器
XiaoHu02071 小时前
Linux多线程(详细全解)
linux·运维·服务器·开发语言·c++·git
Y淑滢潇潇1 小时前
RHCE Day 10 流程控制之条件语句和循环结构
linux·运维·rhce
gaize12131 小时前
服务器怎么选择与配置才能满足企业需求?
运维·服务器·架构
德育处主任1 小时前
『NAS』在群晖部署图片压缩工具-Squoosh
前端·javascript·docker
鸠摩智首席音效师2 小时前
如何安装和配置 Nginx 反向代理服务器 ?
运维·nginx