问题描述
原来我的服务器docker服务运行正常,但在某次尝试用时, 根据系统的错误提示执行了
snap install docker
指令之后,再执行
docker ps
命令则提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
无法访问docker服务了, 查看状态是正常, 并且重启也没报错, 就是无法通过docker命令操作docker了
网上很多相同的报错, 都是一开始下载的时候才出现问题,
而不是像我这种正常使用后, 因为用了另一种方式安装docker导致原来的服务无法被访问到因此解决的方式会和别的不太一样
问题分析
执行
snap install docker
后,你实际上通过 Snap 安装了 Docker 的另一个实例,这个实例可能与系统中原有的 Docker 实例(可能是通过包管理器如 apt, yum, dnf 等安装的)发生冲突。
这通常会导致
/var/run/docker.sock
文件被新的 Docker 实例使用,或者原有的 Docker 服务被停止。
解决步骤
要解决这个问题,需要有以下几个步骤:
1. 停止并卸载通过 Snap 安装的 Docker
首先,尝试停止并卸载通过 Snap 安装的 Docker:
bash
sudo snap stop docker
sudo snap remove docker
2. 确认原有的 Docker 是否正在运行
卸载 Snap 版本的 Docker 后,检查原有的 Docker 是否正在运行:
bash
sudo systemctl status docker # 对于使用 systemd 的系统
# 或者
sudo service docker status # 对于较旧的系统
如果 Docker 没有运行,尝试启动它:
bash
sudo systemctl start docker # 对于使用 systemd 的系统
# 或者
sudo service docker start # 对于较旧的系统
3. 检查 /var/run/docker.sock
确认 /var/run/docker.sock
文件存在并且 Docker 用户(通常是 docker
用户组)有权访问它。
你可以使用 ls -l /var/run/docker.sock
来查看文件权限。
4. 将你的用户添加到 docker 组(如果尚未添加)
如果你之前没有将你的用户添加到 docker
组,你需要这样做以确保你的用户可以无需 sudo 就能运行 Docker 命令:
bash
# 直接执行,无需修改
sudo usermod -aG docker $USER
5. 重启你的机器
有时候,重启你的机器可以解决由于服务冲突或状态不一致引起的问题。reboot
6. 检查 Docker 守护进程的日志
如果 Docker 仍然无法启动,查看 Docker 守护进程的日志可能会提供有用的信息:
bash
journalctl -u docker.service # 对于使用 systemd 的系统
# 或者查看 /var/log/docker.log 或使用 dmesg(如果相关日志被记录在那里)
7. docker ps查看是否恢复成功

至此我的问题解决完成, 如果执行到此步骤你还没有成功, 建议查看下面推荐的其他文章, 或者卸载重装