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

彻底清理旧版本 Docker 的痕迹

问题的核心在于:旧的 Docker 服务仍在运行,并且锁定了它所使用的资源(如套接字文件、进程、数据目录),导致新的安装程序无法正确停止或替换它们。彻底清理旧版本 Docker 的痕迹,然后再在一个新的目录安装新版本。

但请注意,直接删除 Docker 目录(如 /var/lib/docker)会销毁你所有的镜像、容器、卷和网络!请务必先确认你是否需要备份其中的数据。


解决方案:彻底清理并更换安装目录

这里我们假设你想将 Docker 的工作目录(即存放镜像、容器等数据的目录)从默认的 /var/lib/docker 更换到新的位置,例如 /new/path/docker

第一步:尝试优雅地停止旧 Docker 服务(可能失败,但必须尝试)

首先,用尽一切办法尝试停止它。

  1. 使用 systemctl 停止服务(最推荐)

    sudo systemctl stop docker
    sudo systemctl stop docker.socket
    
  2. 如果 systemctl 报错或无响应,直接杀死进程

    # 查找 Docker 相关进程
    ps aux | grep docker# 通常会有 `dockerd` 进程,强制杀死所有 Docker 进程
    sudo pkill -9 dockerd
    sudo pkill -9 docker-containerd
    
第二步:卸载旧版本的 Docker

即使服务没停,我们也先执行卸载命令,至少把包管理器的记录清理掉。

# 对于 Ubuntu/Debian 系统
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 对于 CentOS/RHEL 系统
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

注意: purgeremove 更好,它会同时删除配置文件。

第三步:关键一步 - 手动清理残留文件和目录

这是最重要的一步,因为包管理器卸载不会删除用户数据。

  1. 删除 Docker 的默认工作目录警告:这会删除所有镜像和容器!

    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    
  2. 删除 Docker 的套接字文件和配置文件

    sudo rm -rf /var/run/docker.sock
    sudo rm -rf /etc/docker
    
  3. 再次确认没有任何 Docker 进程在运行

    ps aux | grep docker
    

    如果还有,再次用 sudo pkill -9 [进程名] 结束它们。

第四步:安装新版本的 Docker

现在系统已经干净了,可以安装新版。

  1. 按照官方文档安装 Docker
    访问 https://docs.docker.com/engine/install/ 并选择你的操作系统(如 Ubuntu),按照指南安装。

  2. 在安装过程中指定新的工作目录
    我们不通过修改安装包的方式,而是在 Docker 启动配置中更改它的数据目录。

    • 创建你想要的新目录,例如:
      sudo mkdir -p /new/path/docker
      
    • 修改 Docker 的启动配置文件(通常是 daemon.json):
      sudo mkdir /etc/docker # 如果上一步删除了,需要重新创建
      sudo tee /etc/docker/daemon.json > /dev/null <<EOF
      {"data-root": "/new/path/docker"
      }
      EOF
      
      这个配置告诉 Docker 守护进程将所有数据(镜像、容器等)存储在新的路径。
第五步:启动并验证新 Docker
  1. 启动 Docker 服务

    sudo systemctl start docker
    
  2. 验证安装和配置

    # 检查 Docker 是否运行
    sudo systemctl status docker# 运行 hello-world 镜像测试
    sudo docker run hello-world# 最关键的一步:检查 Docker 信息,确认 "Docker Root Dir" 是否是你设置的新路径
    sudo docker info | grep "Docker Root Dir"
    

    你应该会看到输出:Docker Root Dir: /new/path/docker


总结与要点

  1. 核心矛盾:旧进程锁死资源,导致新安装无法进行。
  2. 解决思路:强制清理(杀死进程、删除文件) -> 干净重装 -> 配置新路径。
  3. 数据警告rm -rf /var/lib/docker破坏性操作,确保你不需要里面的任何容器或镜像后再执行。如果需要备份,请在清理前使用 docker savedocker export 命令。
  4. 永久更改目录:通过修改 /etc/docker/daemon.json 中的 "data-root" 项是官方推荐的方法,而不是移动目录或创建软链接。
http://www.dtcms.com/a/339281.html

相关文章:

  • pytorch学习笔记-模型训练、利用GPU加速训练(两种方法)、使用模型完成任务
  • 常见的软件图片缩放,算法如何选择?
  • 深入解析Spring MVC运行流程:从请求到响应的完整旅程
  • 完整的训练与测试套路 小土堆pytorch记录
  • PyTorch自动求导
  • PID调节
  • Go 进阶学习路线
  • 传统艾灸VS七彩喜艾灸机器人:同样的艾香,多了4分“巧”
  • 电脑出现‘无法启动此程序,因为计算机中丢失dll’要怎么办?2025最新的解决方法分析
  • 家庭健康能量站:微高压氧舱结合艾灸机器人,智享双重养生SPA
  • 大模型基础:Foundamentals of LLM
  • 关于物理世界、感知世界、认知世界与符号世界统一信息结构的跨领域探索
  • 最近常问的70道vue相关面试题
  • 豆包1.5 Vision Lite 对比 GPT-5-min,谁更适合你?实测AI模型选型利器 | AIBase
  • 【Langchain系列七】Langchain+FastAPI(字符串输出与OpenAI规范流式输出)+FastGPT
  • 《若依》项目结构分析
  • 温故而知新 再看设计模式
  • 2025.8.19总结
  • 防抖技术(一)——OIS光学防抖技术详解
  • 块存储 对象存储 文件存储的区别与联系
  • plantsimulation知识点25.8.19 工件不在RGV中心怎么办?
  • 技术详解及案例汇总|JY-V620半导体RFID读写器在晶圆盒追踪中的使用
  • Aiseesoft iPhone Unlocker:轻松解决iPhone锁屏问题
  • 量子计算和超级计算机将彻底改变技术
  • 重置iPhone会删除所有内容吗? 详细回答
  • 【Cocos】2D关节组件
  • canoe发送接收报文不通到底是接口问题还是配置问题如何处理
  • Codeforces 斐波那契立方体
  • 【Pycharm虚拟环境中安装Homebrew,会到系统中去吗】
  • k8sday11服务发现(2/2)