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

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


1. 停止 Docker 服务

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

bash 复制代码
sudo systemctl stop docker

2. 修改 Docker 配置文件

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

json 复制代码
{
  "data-root": "/mnt/data/docker"
}
  • 说明/mnt/data/docker 是你希望存储 Docker 数据的新路径(需提前创建)。

  • 注意 :如果文件不存在,请手动创建:

    bash 复制代码
    sudo mkdir -p /mnt/data/docker

3. 迁移数据(使用 rsynccp

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

4. 验证数据迁移

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

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

5. 重启 Docker 服务

应用配置并启动 Docker:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl start docker

6. 验证修改是否生效

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

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

7. 测试 Docker 功能

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

bash 复制代码
docker run hello-world

8. 清理旧数据(可选)

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

bash 复制代码
sudo rm -rf /var/lib/docker/

注意事项

  1. 权限问题

    • 确保新路径的权限允许 Docker 服务读写(通常为 root 用户):

      bash 复制代码
      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:

    bash 复制代码
    sudo mkdir -p /mnt/ssd/docker
    sudo mount /dev/sdb1 /mnt/ssd
  2. 修改 daemon.json

    json 复制代码
    {
      "data-root": "/mnt/ssd/docker"
    }
  3. 迁移数据并重启 Docker:

    bash 复制代码
    sudo rsync -aP /var/lib/docker/ /mnt/ssd/docker/
    sudo systemctl restart docker
场景 2:解决磁盘空间不足问题
  1. 将 Docker 根目录迁移到更大分区(如 /data/docker)。

  2. 修改 daemon.json 并迁移数据:

    bash 复制代码
    sudo rsync -aP /var/lib/docker/ /data/docker/
    sudo systemctl restart docker

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

相关推荐
功德+n13 分钟前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭1 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿1 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher2 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家4 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR4 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆4 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104665 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999995 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊6 小时前
Docker 入门之网络基础
网络·docker·php