Docker存储目录迁移的坑:一个参数引发的血案!

您所在的位置:网站首页 docker修改存储目录后无法启动了 Docker存储目录迁移的坑:一个参数引发的血案!

Docker存储目录迁移的坑:一个参数引发的血案!

#Docker存储目录迁移的坑:一个参数引发的血案! | 来源: 网络整理| 查看: 265

背景:项目需要,需要对 Docker 的存储目录进行迁移。

迁移的步骤大致如下:

1、停 docker 服务;

2、修改 docker 配置;

这里直接修改的 /etc/docker/daemon.json,在其中添加:

1234{ "data-root": "/home/data/docker", "pidfile": "/home/run/docker/docker.pid"}

3、迁移原数据目录到新目录下;

4、重启 docker 服务;

一般来说,经过以上 4 步,之前的 docker 服务都能继续正常运行。

问题

项目中有些是使用 docker-compose 进行管理的,其中就包括 ELK。

发现在目录迁移后,ELK 的服务无法正常启动:

其中,elasticsearch 报错信息如下:

logstash 的报错信息:

解决过程

网上进行了一些检索。

有人提到,尝试重新导入镜像。

该方法在前几个环境,均能解决问题。

但是在一些环境,不管怎么导,都无法解决问题。

我们尝试了目录的回退。

发现回退后,服务又可以正常运行。

很明显,是目录迁移后,权限发生了变化。

那么问题到底出在哪里呢?

我找出了操作步骤,其中迁移目录的命令是:

1cp -R /var/lib/docker /home/data/

-R 是什么含义呢?

查阅 cp 命令的帮助文档:

发现 -R 是递归的含义,也就是说会进行递归复制。

但是复制后的文件权限有办法保证吗?

我们发现了 -p 参数:

它可以保留源文件的属性。

解决方法

将之前拷贝的目录进行备份(或者直接删除),重新拷贝源 docker 数据目录到新的目录下。

这次使用命令:

1cp -rp /var/lib/docker /home/data/

再重启 docker。

再去观察 ELK 服务的状态:

一切恢复正常。

参考:

https://www.cnblogs.com/klvchen/p/9098745.html https://www.cnblogs.com/lipijin/p/3833117.html


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3