栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker数据跨分区迁移

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker数据跨分区迁移

问题背景

最近与L公司合作项目需要在其公网服务器上部署测试环境。在部署环境的时候发现一个有意思的现象:

我使用docker load加载一组之前下载好的镜像,加载结束后使用docker images检查加载结果,发现镜像列表中少了几个镜像。我尝试若干次以及改变load次序,结果依旧是有几个镜像神秘地“消失”了。于是,我怀疑应该是后台运行了某个monitor进程把我的镜像删除了。比较合理的猜想是当数据分区占用量达到一定阈值的时候就会触发monitor(应该是阿里云提供的管理组件)的image/container GC。基于这个猜想,我检查一下文件系统中各数据分区的使用量:

df -h

部分运行结果:

/dev/vda1               50G   39G  8.4G  83% /
/dev/mapper/vg01-data  613G   46G  536G   8% /data

该服务器/目录的数据分区只有50G,docker数据默认存放的位置在/var/lib/docker,跟/目录在同一数据分区。结合在L公司其他服务器上部署的经验,猜测image GC触发的阈值应该是85%。不过,好在另有一个挂载点在/data的数据分区有600多G。

解决方案

最理想的方案是把docker的数据迁移到/data上。下面是一种比较稳妥的迁移方式:

Debian/Ubuntu
# 停止docker服务
sudo service docker stop

# 在目标数据分区上创建用于存放docker数据的目录
sudo mkdir -p /data/${tar_path}
# 将数据迁移到目标数据分区
sudo mv /var/lib/docker /data/${tar_path}
# 创建一个符号连接,让/var/lib/docker指向迁移后的目录
sudo ln -s /data/${tar_path}/docker /var/lib/docker

# 启动docker服务
sudo service docker start
CentOS/Fedora
# 停止docker服务
sudo systemctl stop docker

# 在目标数据分区上创建用于存放docker数据的目录
sudo mkdir -p /data/${tar_path}
# 将数据迁移到目标数据分区
sudo mv /var/lib/docker /data/${tar_path}
# 创建一个符号连接,让/var/lib/docker指向迁移后的目录
sudo ln -s /data/${tar_path}/docker /var/lib/docker

# 启动docker服务
sudo systemctl start docker

检查一下迁移后各数据分区的使用情况:

df -h

部分运行结果:

/dev/vda1               50G   29G   18G  62% /
/dev/mapper/vg01-data  613G   54G  528G  10% /data
执行结果

docker服务可以正常运行,之前没能加载完全的镜像也能够正常加载运行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号