专栏文章 docker 磁盘目录迁移记录

Jerry li · 2019年01月22日 · 最后由 Jerry li 回复于 2019年01月23日 · 3010 次阅读

遇到坑

使用 docker 一段时间后,发现相关的服务无法进行数据保存,查找原因后发现,原来是安装 docker 时默认分配的磁盘空间是 15G ,当所有 docker 镜像、容器的使用到达上限时,就无法正常工作了。

1.恢复服务。

清理部分日志、截图等文件后,重启服务,功能恢复正常。

2.磁盘迁移

-- 找一个空间比较大的磁盘目录,作为迁移的目标。  例如我找到  /data  

df -h        

-- 在目标磁盘创建新的目录用以存放:   
cd /data   
mkdir docker-lib

-- 开始迁移:
-- 停止docker 服务:
systemctl stop docker

-- docker 文件迁移:    这里由于涉及到十几G 的文件迁移,所以需要一段较长的时间。  可以时不时执行  df -h  看下新磁盘的大小变化,估算一下已迁移了多少
mv /var/lib/docker /data/docker-lib

-- 对原docker 目录与新目录建立软连接   (注意路径是否完整)
ln -snf  /data/docker-lib/docker /var/lib/docker

-- 检查软连接是否成功:
ll /var/lib/docker

-- 重新启动docker:
systemctl start docker

-- 检查镜像是否已迁移成功:
docker images

-- 检查容器是否迁移成功:
docker ps -a

3. 软连接创建错误问题

在第一次迁移后,启动 docker 发现镜像和容器列表都是空的!! (差点吓尿,要是都丢了是一个大麻烦)
赶紧查看/data/docker-lib 目录,发现下面还有一个 docker 目录,里面保存的是具体的镜像、容器的文件(说明没丢)。仔细检查后发现是创建软连接是少了一层:

-- 第一次执行的命令
ln -s  /data/docker-lib /var/lib/docker

找到原因后,重新停服务、创建软连接:

systemctl stop docker
ln -snf  /data/docker-lib/docker /var/lib/docker      --  因为原来已经建立了软连接,所以需要加上 f 的参数进行强制替换
systemctl start docker

重新检查,镜像和容器都显示出来了。 启动容器后检查各项服务,功能正常。 迁移完成!

总结

  • 如果是初次安装 docker 服务,一定要记得设置默认目录。 具体方式可以百度一下。
  • 如果必须要迁移,认真检查每一步命令,特别是目录路径
共收到 2 条回复 时间 点赞

尽量不要用软链, 一些容器编排系统不支持, 比如 k8s。

孙高飞 回复

了解了,如果要上容器编排会注意这个配置。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册