温馨提示×

docker数据在centos怎么迁移

小樊
46
2025-10-19 15:09:38
栏目: 智能运维

Docker数据在CentOS上的迁移步骤

1. 停止Docker服务

迁移前必须停止Docker服务,确保数据一致性,避免迁移过程中容器或镜像被修改导致损坏。执行以下命令:

sudo systemctl stop docker

2. 确认当前Docker数据目录

通过docker info命令查看当前Docker数据存储路径(关键信息为Docker Root Dir),默认通常是/var/lib/docker

sudo docker info | grep "Docker Root Dir"

3. 创建新的数据目录

选择目标存储路径(如/new/docker-data,可根据磁盘空间情况选择,如/home或挂载的大容量分区),并创建目录:

sudo mkdir -p /new/docker-data

4. 迁移现有数据到新目录

使用rsync命令同步数据(保留文件权限、属性及时间戳,避免数据损坏):

sudo rsync -avz /var/lib/docker/ /new/docker-data/

若数据量较小,也可用cp -a命令(-a参数保留所有属性):

sudo cp -a /var/lib/docker/. /new/docker-data/

5. 修改Docker配置文件

编辑Docker配置文件/etc/docker/daemon.json(若文件不存在则创建),添加data-root字段指定新路径:

sudo vim /etc/docker/daemon.json

内容如下(仅保留data-root,避免与其他配置冲突):

{
  "data-root": "/new/docker-data"
}

6. 处理SELinux(若启用)

若系统启用了SELinux,需修改新目录的安全上下文,确保Docker能访问:

sudo chcon -R system_u:object_r:container_var_lib_t:s0 /new/docker-data

7. 重启Docker服务

加载新配置并启动Docker:

sudo systemctl daemon-reload  # 重新加载systemd配置
sudo systemctl start docker   # 启动Docker服务

8. 验证迁移结果

  • 检查Docker Root Dir是否为新路径:
    docker info | grep "Docker Root Dir"
    
    预期输出应显示新路径(如Docker Root Dir: /new/docker-data)。
  • 测试容器运行:启动一个测试容器,验证功能正常:
    docker run --rm hello-world
    

9. 清理旧数据(可选)

确认新路径工作正常后,删除旧数据目录释放空间:

sudo rm -rf /var/lib/docker

注意事项

  • 数据备份:迁移前务必备份重要数据(如用tar打包/var/lib/docker),防止误操作导致数据丢失。
  • 权限问题:确保新目录的权限为755,且Docker用户(通常为root)有读写权限。
  • 磁盘空间:新目录所在磁盘需有足够空间容纳现有Docker数据(可通过df -h检查)。
  • 存储驱动兼容性:确保新系统的存储驱动(如overlay2)与旧系统一致,避免兼容性问题。

0