作者在Docker笔记(持续更新)提到在CentOS7上安装Docker时会有告警,作者觉得很有必要单开一篇文章单独将(希望让其他小伙伴能够通过标题搜到这篇文章,减少弯路)。
通过docker info查看本机docker的基本信息,你可能看到如下告警:
image.png
问题的根源就是Docker安装在CentOS上的挂载位置磁盘参数ftype为0,不为1,导致在安装Docker时,Docker会根据当前挂载位置的磁盘参数动态选择Docker的Storage Driver,这样有可能是Docker最不推荐的devicemapper+loopback模式,亦或是overlay模式,但是使用时可能存在问题。
如何解决
作者在上文中Docker笔记(持续更新)提到解决办法,但是实践却不成功,其原因就是如果卸载"/"对应的挂载点,系统命令就不能用了。原因也很简单,因为centos-root挂载点下包含了系统大部分命令,所以这个方法也不成功。如何解决,只有重新拿一个文件系统进行格式化,并挂载到对应目录,同时将Docker的相关目录修改为该目录下,过程如下:
可以看到这里除了/dev/mapper/centos-root 文件系统以外还有/dev/mapper/centos-home 文件系统,可以把它进行卸载——格式化——挂载
umount /dev/mapper/centos-home //device的路径可以在xfs_info中找到
//如果提示device is busy
umount -l /dev/mapper/centos-home //强制卸载同时要重启
mkfs.xfs -n ftype=1 /dev/mapper/centos-home //重新格式化device,在此
mount /dev/mapper/centos-home /home //重新挂载
xfs_info /home //查看结果
image.png
经过上述操作后,可以看到该文件系统的ftype类型已为1。
接下来就是修改Docker的service,设置其数据目录、启动目录及存储类型等,并让其启动时能够自动加载。
cat /etc/docker/daemon.json
{
"storage-driver":"overlay2",
"data-root":"/home/docker/lib",
"exec-root":"/home/docker/run"
}
systemctl daemon-reload
systemctl restart docker
image.png
网友评论