迁移Docker容器存储位置
2024年11月17日大约 2 分钟
先使用 df -h
了解下当前机器的分区状况
查看默认的容器数据保存位置
docker info | grep "Docker Root Dir"
通过 docker info
可以看到默认的安装位置在 /var/lib/docker
,默认是在系统盘
使用 du 命令来查看使用 docker info
了解到的 docker 默认数据目录有多大
du -hs /var/lib/docker
确定镜像都已经妥善保存好、或者用的都是公开的镜像,容器实例中没有存储特别的东西,可以考虑先执行 docker system prune
给 docker 数据目录先减个肥,再进行迁移。
要进行数据迁移,需要先暂停 docker 服务
service docker stop
创建迁移目录(用来放新数据的目录)
mkdir -p /usr/local/tools/docker
然后使用 rsync
对数据进行迁移
rsync -avz /var/lib/docker/ /usr/local/tools/docker
随着日志输出将会看到类似下面的输出:
docker/tmp/
docker/trust/
docker/volumes/
docker/volumes/metadata.db
sent 1,514,095,568 bytes received 3,096,373 bytes 4,998,984.98 bytes/sec
total size is 3,955,563,885 speedup is 2.61
数据就这样迁移完毕了,完整性由 rsync 保证,接下来要修改 docker 的配置,让 docker 从新的位置进行数据加载和存储
编辑 /etc/docker/daemon.json
配置文件,如果没有这个文件,那么需要自己创建一个,根据上面的迁移目录,基础配置如下:
{
"data-root": "/usr/local/tools/docker"
}
如果之前修改过 docker mirror (其他同理),那么配置需要修改为这个样子:
{
"data-root": "/usr/local/tools/docker",
"registry-mirrors": [
"http://YOUR_MIRROR_LINK"
]
}
将容器服务启动起来
service docker start
使用开头的命令(docker info | grep "Docker Root Dir"
)再次验证下 docker 数据存储设置,可以看到配置已经生效
Docker Root Dir: /usr/local/tools/docker
至此,完成迁移,运行一个实例看看情况得
对于之前的 /var/lib/docker
目录可以使用 rm -rf /var/lib/docker
将它清理掉,因为已经无用了