Docker存储目录迁移的坑:一个参数引发的血案! |
您所在的位置:网站首页 › docker修改存储目录后无法启动了 › Docker存储目录迁移的坑:一个参数引发的血案! |
背景:项目需要,需要对 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 |