Centos 7 Docker 数据迁移方法

系统环境:CentOS 7

Docker 环境: 18.09.6

日期:2020年10月25日,(PS:如果后续 Docker 配置文件有变动再来更新)

【注】

1. 在 /etc/docker/daemon.json 配置中添加参数: "graph":"/data/docker"

graphDocker 17.05 中已被弃用,需使用 data-root 来替代(也就是本文的例子)

2. 其他方案大部分都比较老了,是 Docker 老版本的方案;还有其他建立软连接或者是修改 /etc/xxx/docker 之类的方法在之前的 Docker 版本或者是 Ubuntu 应该还能使用,但是如果没有该配置文件的话也推荐使用本文章的方法,该方法在新版本(18、19)都中已经过测试,所以建议使用这个方法。

开始迁移之旅。

1. 环境准备

安装 rsync,为了保证 docker 原有文件的完整性(比如说权限信息),推荐使用 rsync,而不是直接 mv。

yum -y install rsync

查看当前 docker 根目录所在(必须 Docker 运行时):

docker info

2. 迁移数据

# 先关闭 Docker 服务:
systemctl stop docker

# 然后复制文件到新目录
rsync -avz /var/lib/docker/ /new-path/docker/

/new-path/docker/ 是新的根目录路径,该操作将 /var/lib/docker 目录下的所有文件,复制到 /new-path/docker 目录下。

3. 修改 docker 配置文件,并指向新的数据存放地址。

【注】1. daemon.json 默认没有该文件,直接新建即可。

2. vim 命令需要安装,没有的话可以使用 vi 命令。

vim /etc/docker/daemon.json
# 并添加如下内容(json格式,如果已有其他配置,记得添加逗号,再添加 data-root,否则会报错)
{
    "data-root":"/new-path/docker"
}

# wq 保存即可,如果没有的话会自动新建

【注】如果将该 daemon 文件删除的话,则 docker 继续使用 /var/lib/docker 作为默认路径。

4. 重新启动

systemctl start docker 

5. 检验是否迁移成功

docker info

【注】注意检查 Docker Root Dir 是否是 daemon 中配置的路径。

6. 清空原有 docker 根目录

【注】建议清空 /var/lib/docker 路径下的所有文件,而不是删除整个目录。

cd /var/lib/docker

# 清空当前目录下的所有文件(包含目录)
rm -rf ./* 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注