尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
docker迁移SOP
整体流程目录一、先确认当前环境二、先解决数据盘开机挂载三、创建新的 Docker 数据目录四、确认 rsync五、记录当前运行中的容器六、停止业务容器七、停止 Docker 和 containerd八、复制 Docker 数据九、配置 containerd 新目录十、配置 Docker 新目录十一、增加 systemd 数据盘依赖十二、先启动 containerd十三、启动 Docker十四、确认原来的资源还在十五、恢复迁移前运行的容器十六、确认新数据盘正在使用十七、重启机器验证十八、确认无误后删除旧数据1. 查数据盘 UUID ↓2. 写 /etc/fstab ↓3.mount-a验证 ↓4. 创建 /mnt/data/docker、containerd ↓5. 记录正在运行的容器 ↓6.dockerstop ↓7. 停 Docker containerd ↓8.rsync两个目录 ↓9. containerd root → /mnt/data/containerd ↓10. Docker>11. systemdRequiresMountsFor/mnt/data ↓12. 启动 containerd 并验证 ↓13. 启动 Docker 并验证 ↓14. 恢复容器 ↓15.reboot↓16. 再次验证 ↓17. 删除 /var/lib/docker、/var/lib/containerd一、先确认当前环境先看磁盘df-hfindmnt /mnt/data 确认 Docker 当前目录dockerinfo|grep-EDocker Root Dir|Storage Driver|driver-type查看 Docker/containerd 占用du-sh/var/lib/dockerdu-sh/var/lib/containerd2/dev/null 检查 containerd containerd--versioncontainerd config dump|grep-E^version|^root|^state我们这台迁移前类似 Docker Root Dir: /var/lib/docker containerd: version3root/var/lib/containerdstate/run/containerd二、先解决数据盘开机挂载这是必须先做的。 查看数据盘 UUID blkid /dev/vdb1 例如 /dev/vdb1:UUID7c9076b0-44d8-4744-8100-c7ebda4f818cTYPEext4先备份cp-a/etc/fstab /etc/fstab.bak.$(date%F-%H%M%S)编辑vim/etc/fstab 增加UUID你的UUID /mnt/data ext4 defaults02例如UUID7c9076b0-44d8-4744-8100-c7ebda4f818c /mnt/data ext4 defaults02验证mount-a没有报错后 findmnt /mnt/data 应该类似 TARGET SOURCE FSTYPE OPTIONS /mnt/data /dev/vdb1 ext4 rw,relatime三、创建新的 Docker 数据目录mkdir-p/mnt/data/dockermkdir-p/mnt/data/containerd 检查ls-ld/mnt/data/docker /mnt/data/containerd四、确认 rsyncrsync--version|head-1如果没有aptupdateaptinstall-yrsync五、记录当前运行中的容器这个很重要后面用于恢复。dockerps-q/root/docker-running-before-migration.txt 建议顺便备份一些状态dockerps-a/root/docker-ps-before-migration.txtdockerimages/root/docker-images-before-migration.txtdockervolumels/root/docker-volumes-before-migration.txt六、停止业务容器这一步开始会有业务中断。dockerstop-t30$(dockerps-q)确认dockerps应该为空。七、停止 Docker 和 containerd依次 systemctl stop docker.service systemctl stop docker.socket systemctl stop containerd.service 确认 systemctl is-activedockersystemctl is-active containerd 正常应该 inactive inactive八、复制 Docker 数据迁 /var/lib/dockerrsync-aHAXx--numeric-ids--infoprogress2\/var/lib/docker/\/mnt/data/docker/ 迁 containerdrsync-aHAXx--numeric-ids--infoprogress2\/var/lib/containerd/\/mnt/data/containerd/ 复制完成后检查du-sh/var/lib/docker /mnt/data/dockerdu-sh/var/lib/containerd /mnt/data/containerd 源目录和目标目录大小应该基本一致。 注意这里 /var/lib/docker/ 最后这个 / 不要漏。九、配置 containerd 新目录先确认另一台机器的 config version containerd config dump|grep^version如果跟这台一样 version3就创建mkdir-p/etc/containerd 然后cat/etc/containerd/config.tomlEOF version 3 root /mnt/data/containerd state /run/containerd EOF确认cat/etc/containerd/config.toml 应该是 version3root/mnt/data/containerdstate/run/containerd注意 root → /mnt/data/containerd state → /run/containerd 只迁 root。 不要把 state 迁到数据盘。十、配置 Docker 新目录如果cat/etc/docker/daemon.json 不存在可以直接mkdir-p/etc/docker 然后cat/etc/docker/daemon.jsonEOF { data-root: /mnt/data/docker } EOF检查 python3-mjson.tool /etc/docker/daemon.json 如果另一台已经有 daemon.json不要直接覆盖。 例如原来{registry-mirrors:[xxx]}应该改成{data-root:/mnt/data/docker,registry-mirrors:[xxx]}十一、增加 systemd 数据盘依赖这是为了防止 机器启动 ↓ /mnt/data 没挂载 ↓ Docker 先启动 ↓ Docker 又往系统盘写 containerdmkdir-p/etc/systemd/system/containerd.service.dcat/etc/systemd/system/containerd.service.d/data-mount.confEOF [Unit] RequiresMountsFor/mnt/data EOFDockermkdir-p/etc/systemd/system/docker.service.dcat/etc/systemd/system/docker.service.d/data-mount.confEOF [Unit] RequiresMountsFor/mnt/data EOF加载 systemctl daemon-reload十二、先启动 containerdsystemctl start containerd 检查 systemctl status containerd --no-pager 必须 Active: active(running)然后 containerd config dump|grep-E^version|^root|^state必须变成 version3root/mnt/data/containerdstate/run/containerd如果这里还是 /var/lib/containerd 就先不要启动 Docker。十三、启动 Dockercontainerd 正常后 systemctl startdocker检查 systemctl statusdocker--no-pager 再dockerinfo|grep-EDocker Root Dir|Storage Driver|driver-type必须看到 Storage Driver: overlayfs driver-type: io.containerd.snapshotter.v1 Docker Root Dir: /mnt/data/docker十四、确认原来的资源还在dockerps-adockerimagesdockervolumelsdockersystemdf确认 - 容器数量没少 - 镜像还在 - Volume 还在十五、恢复迁移前运行的容器直接xargs-rdockerstart/root/docker-running-before-migration.txt 检查dockerps--formattable {{.Names}}\t{{.Status}}\t{{.Ports}}十六、确认新数据盘正在使用df-h/ /mnt/data 再du-sh/mnt/data/dockerdu-sh/mnt/data/containerd 确认dockerinfo|grepDocker Root Dir结果 Docker Root Dir: /mnt/data/docker 以及 containerd config dump|grep^root结果 root/mnt/data/containerd十七、重启机器验证这一步强烈建议做。reboot机器回来后 findmnt /mnt/data 确认 /mnt/data /dev/vdb1 ext4... 然后 containerd config dump|grep-E^version|^root|^state确认 root/mnt/data/containerdDockerdockerinfo|grep-EDocker Root Dir|Storage Driver|driver-type确认 Docker Root Dir: /mnt/data/docker 然后dockerps--formattable {{.Names}}\t{{.Status}}再看磁盘df-h/ /mnt/data十八、确认无误后删除旧数据只有完成重启验证之后再做。 先du-sh/var/lib/dockerdu-sh/var/lib/containerd 再次确认dockerinfo|grepDocker Root Dircontainerd config dump|grep^root分别必须是 /mnt/data/docker /mnt/data/containerd 然后rm-rf/var/lib/dockerrm-rf/var/lib/containerd 再df-h/ 这样系统盘空间就会释放出来。
RELATED

相关推荐

超构表面在光电无源干扰中的技术突破与应用

超构表面在光电无源干扰中的技术突破与应用

1. 光电对抗中的无源干扰技术现状光电对抗是现代电子战的重要组成部分,其中无源干扰技术因其隐蔽性强、成本低廉、部署灵活等特点,在军事和民用领域都发挥着关键作用。传统无源干扰手段主要包括烟幕、箔条、角反射器等,这些技术虽然成熟可靠&…

📅 2026/10/14 7:05:14
astropy.units API 参考:单位体系、物理类型、格式与配置项详解

astropy.units API 参考:单位体系、物理类型、格式与配置项详解

科学计算科研数据分析 【免费下载链接】astropy Astronomy and astrophysics core library 项目地址: https://gitcode.com/gh_mirrors/as/astropy 点击查看 免费下载 本文以 astropy.units 包的官方 API 参考(docs/units/ref_api.rst)为主线…

📅 2026/10/14 7:05:14
单片机毕设项目:基于单片机的4G老人跌倒检测健康监护与定位装置设计 基于STM32的老人跌倒报警与4G远程监测系统实现(032604)

单片机毕设项目:基于单片机的4G老人跌倒检测健康监护与定位装置设计 基于STM32的老人跌倒报警与4G远程监测系统实现(032604)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

📅 2026/10/14 7:05:14
MORE NEWS

更多资讯

📰

浏览器插件ponytail:技能包机制与网页信息自动化整理

ponytail 是我近一年在维护的一个浏览器插件,核心逻辑就一句话:把散落在网页里的关键信息“扎”成一束。以前我收集资料的方式特别原始,开一堆标签页,这边复制一句,那边截图一块,最后整理笔记的时候人已经麻…

📰

企业环保评价报告全流程指南与实战技巧

1. 项目概述:环保评价报告的核心价值在工业生产领域,废气、废水、固废(简称"三废")的环境管理是企业合规运营的生命线。去年协助某电子制造企业完成扩建项目环评时,他们的总工说过一句让我印象深刻的话&…

📰

FanControl 识别不到风扇:3 项快查 + 4 层定位,把转速找回来

FanControl 识别不到风扇:3 项快查 4 层定位,把转速找回来 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Gi…

📰

ponytail物理模拟技术原理与动画应用

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"ponytail",未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所附“相关热搜词”与“最新网络热词”内容为空(为纯空代码块&#xf…

📰

OpenHarmony与React Native集成中Redux异步Action的解决方案

1. 项目背景与核心挑战在混合应用开发领域,OpenHarmony与React Native(RN)的结合为开发者提供了跨平台能力与原生性能的平衡方案。Redux作为RN生态中最流行的状态管理工具,其异步Action处理一直是复杂业务场景下的关键难点。近期在实际项目中&#xff0c…

📰

微信聊天记录导出工具:SQLite解析与多格式导出实战

简介:这是一款面向普通微信用户与轻量级开发者的数据管理工具,解决聊天记录难以长期保存、跨设备查看及多格式复用的痛点。资源为精简型源码包,共3个文件:1个.inscode配置文件(定义导出规则与路径)、1个ind…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬