#1 发现问题
拿到某云主机时,选择了最新的CentOS 7.2的公共镜像,一些工作过后,开始布暑应用。因为没有使用docker仓库,所以我直截在服务器上clone的代码,直截进行构建。构建速度还是很快的。
但是当ubuntu 14.04镜像下载完成之后,突然报出错误,这在以前的本地环境和本地服务器中多次执行都没有出现过问题,一时晕菜。
ERROR: Service 'loc_data' failed to build: mkdir arb/docker/overlay/20c822d5447dd6d86d45583d343b32ba1f4f8c1b015822f602c82b4f182e7990-init/merged/dev/shm: invalid argument
#2 寻找线索
多方查找,群里大神也不在,百度后得到的信息有限,后来在github上一个moby的项目问题中找到了一些资料大约是说因为文件系统支持的问题导致的。
根据这条线索,核对了本地服务器,果然发现了一些差异,本地文件系统是xfs的分区格式,而某云服务器的公共开镜像 CentOS7.2的文件系统是ext3的。
而且,docker默认安装会将镜像放置在/var/lib/docker目录下,以致于文问题出来了前面遇到的问题。
#3 寻找解决问题的办法
线索和条件已知,最直截的想法就是把那个公开的ext3文件系统的,镜像干掉,直截装一个xfs的,下一个CentOS 7的安装包,重新装一下。
另一个想法是,能否把另外的数据盘格成xfs的,把docker 的目录移过去,想来还是这样省事,说干就干。
#4 移动docker的工作目录
在网上找到两篇文章,介绍怎么修改docker的目录的。
##1 方法1
分一个区直载 mount到/var/lib/docker。
##2 方法2
修改docker 的配置文件,在/etc/sysconfig/docker 添加 other_args="--graph=/docker" ,还有一种说法是 other_args="--g /docker" ,我的实验结果是,我的系统下这个位置根据没有这个文件,手动建立后,添写上诉的内容也不起作用,我想可能是因发不同发行版的区别的吧,返正不管用。
##3 方法3
将/var/lig/docker中的内容直载复到的一个数据盘的目录,然后将原目录改名,然后建个连接。
service docker stop
cd /data
mkdir docker
cp -rf /var/lib/docker /data/docker
cd /var/lib
mv docker docker.bak
ln -s /data/docker /var/lib/docker
service docker start
#5 验证构建ubuntu 14.04镜像
结果构建过程一切顺利,项目已经能正常运行起来了。。。