当前位置: 首页 > news >正文

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. 问题解决

问题描述

原来我的服务器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:

sudo snap stop docker
sudo snap remove docker

2. 确认原有的 Docker 是否正在运行

卸载 Snap 版本的 Docker 后,检查原有的 Docker 是否正在运行:

sudo systemctl status docker  # 对于使用 systemd 的系统
# 或者
sudo service docker status    # 对于较旧的系统

如果 Docker 没有运行,尝试启动它:

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 命令:

# 直接执行,无需修改
sudo usermod -aG docker $USER

5. 重启你的机器

有时候,重启你的机器可以解决由于服务冲突或状态不一致引起的问题。reboot

6. 检查 Docker 守护进程的日志

如果 Docker 仍然无法启动,查看 Docker 守护进程的日志可能会提供有用的信息:

journalctl -u docker.service  # 对于使用 systemd 的系统
# 或者查看 /var/log/docker.log 或使用 dmesg(如果相关日志被记录在那里)

7. docker ps查看是否恢复成功

在这里插入图片描述


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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker最佳实践进阶(一):Dockerfile介绍使用
  • 详解贪心算法
  • CANopen 控制多台设备的支持能力与定制方案评估
  • Cisco交换机SSH使用RSA公钥免密登录(IOS与Nexus,服务器以RHEL8为例)
  • Java线程池练习
  • Visual Studio Code安装与C/C++语言运行(下)
  • 1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)
  • 数据结构---双向循环链表
  • elementplus 二次封装 select 自定义指令上拉加载更多 完美解决 多次接口调用 重新加载数据多次调用数据!!!
  • LeetCode-字母异位词分组
  • 用R语言进行数据类型的检查和基础转换
  • 如果将一个对象赋值给 ref,那么这个对象将通过 reactive() 转为具有深层次响应式的对象。这也意味着如果对象中包含了嵌套的 ref,它们将被深层地解
  • rk3568-linux sdk编译update.img时以当前时间进行命名
  • 前端开发有什么专业术语吗?
  • Golang | Leetcode Golang题解之第335题路径交叉
  • python3.6+scrapy+mysql 爬虫实战
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【译】理解JavaScript:new 关键字
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • canvas 绘制双线技巧
  • input实现文字超出省略号功能
  • Invalidate和postInvalidate的区别
  • Java方法详解
  • Leetcode 27 Remove Element
  • Node 版本管理
  • opencv python Meanshift 和 Camshift
  • SpriteKit 技巧之添加背景图片
  • Vue2.0 实现互斥
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 你不可错过的前端面试题(一)
  • 如何用vue打造一个移动端音乐播放器
  • 使用 Docker 部署 Spring Boot项目
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • raise 与 raise ... from 的区别
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • !!java web学习笔记(一到五)
  • # 达梦数据库知识点
  • #07【面试问题整理】嵌入式软件工程师
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (java)关于Thread的挂起和恢复
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .gitignore文件_Git:.gitignore
  • .net core 的缓存方案
  • .net MySql
  • .NET 中让 Task 支持带超时的异步等待
  • .Net接口调试与案例
  • .NET上SQLite的连接