系统环境:CentOS 7
Docker 环境: 18.09.6
日期:2020年10月25日,(PS:如果后续 Docker 配置文件有变动再来更新)
【注】
1. 在 /etc/docker/daemon.json
配置中添加参数: "graph":"/data/docker"
。
– graph
在 Docker 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 ./*