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

docker 目录更改,必须做数据迁移才能启动

要修改 Docker 镜像的存储位置 并迁移数据(如从 /var/lib/docker 迁移到 /mnt/data/docker),需要以下步骤:


1. 停止 Docker 服务

在修改配置和迁移数据前,先停止 Docker 服务:

sudo systemctl stop docker

2. 修改 Docker 配置文件

编辑 Docker 的配置文件 /etc/docker/daemon.json,设置新的存储路径:

{"data-root": "/mnt/data/docker"
}
  • 说明/mnt/data/docker 是你希望存储 Docker 数据的新路径(需提前创建)。
  • 注意:如果文件不存在,请手动创建:
    sudo mkdir -p /mnt/data/docker
    

3. 迁移数据(使用 rsynccp

方法 1:使用 rsync(推荐)
sudo rsync -aP /var/lib/docker/ /mnt/data/docker/
  • 参数说明
    • -a:归档模式(保留权限、符号链接等)。
    • -P:显示进度和断点续传支持。
    • /var/lib/docker/:源目录(原始 Docker 数据)。
    • /mnt/data/docker/:目标目录(新存储路径)。
方法 2:使用 cp
sudo cp -r /var/lib/docker/* /mnt/data/docker/
  • 注意cp 可能不会保留所有文件属性(如权限、符号链接),建议优先使用 rsync

4. 验证数据迁移

检查目标目录是否有完整数据:

ls -l /mnt/data/docker/
  • 应该看到 image/overlay2/ 等 Docker 子目录。

5. 重启 Docker 服务

应用配置并启动 Docker:

sudo systemctl daemon-reload
sudo systemctl start docker

6. 验证修改是否生效

检查 Docker 的根目录是否已更改:

docker info | grep "Docker Root Dir"
  • 输出应显示新路径(例如 /mnt/data/docker)。

7. 测试 Docker 功能

运行一个简单容器验证功能是否正常:

docker run hello-world

8. 清理旧数据(可选)

如果确认迁移成功且不再需要旧数据,可以删除原始目录:

sudo rm -rf /var/lib/docker/

注意事项

  1. 权限问题

    • 确保新路径的权限允许 Docker 服务读写(通常为 root 用户):
      sudo chown -R root:root /mnt/data/docker
      sudo chmod -R 755 /mnt/data/docker
      
  2. 备份数据

    • 操作前备份原始数据(/var/lib/docker)以防意外。
  3. 挂载点问题

    • 如果 /mnt/data 是挂载的分区,确保其在 /etc/fstab 中配置为开机自动挂载,避免重启后路径失效。
  4. 存储驱动兼容性

    • 确保新路径所在的文件系统支持 Docker 的存储驱动(如 overlay2)。

示例场景

场景 1:将 Docker 数据迁移到 SSD
  1. 创建新目录并挂载 SSD:
    sudo mkdir -p /mnt/ssd/docker
    sudo mount /dev/sdb1 /mnt/ssd
    
  2. 修改 daemon.json
    {"data-root": "/mnt/ssd/docker"
    }
    
  3. 迁移数据并重启 Docker:
    sudo rsync -aP /var/lib/docker/ /mnt/ssd/docker/
    sudo systemctl restart docker
    
场景 2:解决磁盘空间不足问题
  1. 将 Docker 根目录迁移到更大分区(如 /data/docker)。
  2. 修改 daemon.json 并迁移数据:
    sudo rsync -aP /var/lib/docker/ /data/docker/
    sudo systemctl restart docker
    

通过以上步骤,你可以安全地修改 Docker 镜像的存储位置并迁移数据。如果遇到问题,请检查权限、配置文件格式或挂载点设置。

http://www.lqws.cn/news/443341.html

相关文章:

  • 输入url之后发生了什么
  • Python-循环结构解析
  • Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
  • oracle通过dblink 连接pg数据库
  • 使用 Prometheus 访问 TDengine ---
  • OpenCV——直方图与匹配
  • Postman 的 Jenkins 管理 - 手动构建
  • OpenCV指定pid和vid通过MSMF打开摄像头
  • Spring AOP @Before (前置通知): 在目标方法执行前做什么?
  • 智能家居HA篇 二、配置Home Assistant并实现外部访问
  • android 省市区联动选择
  • 计算机视觉阶段一:CV入门基础
  • Xsens动作捕捉技术用于研究机器人的运动控制、姿态调整以及人机交互
  • .NET 的配置系统
  • 【Mini-F5265-OB开发板试用测评】2、PWM驱动遥控车RX2接收解码带马达驱动控制IC
  • 华为OD机试_2025 B卷_构成正方形数量(Python,100分)(附详细解题思路)
  • 如何获取Java对象的大小
  • MQTT 消息队列传输协议(Message Queuing Telemetry Transport)
  • 【深度学习】生成对抗网络(GANs)深度解析:从理论到实践的革命性生成模型
  • 优化 Python 爬虫性能:异步爬取新浪财经大数据
  • 46道Jenkins高频题整理(附答案背诵版)
  • Jenkins通过Pipeline流水线方式编译Java项目
  • IP 地理库的使用指南:从基础应用到深度实践​
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(AOF篇)
  • IntersectionObserver API应用场景示例代码详解
  • 医疗低功耗智能AI网络搜索优化策略
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • Kafka性能压测报告撰写
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • 靶场(二十五)---小白心得靶场体会---Access