迁移Docker容器存储位置
2025年5月19日大约 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 将它清理掉,因为已经无用了
