1 报错问题
docker 无法启动,系统日志报错的关键片段如下:
bash
... "devmapper not configured"...
..."failed to load plugin io.containerd.snapshotter.v1.overlayfs" error="/home/docker/containerd/daemon/io.containerd.snapshotter.v1.overlayfs does not support d_type. If the backing filesystem is xfs, please reformat with ftype=1 to enable d_type support"...
..."snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter
snapshotter \"overlayfs\" not found: not found"...
2 报错解析
如果你的 docker 数据目录是 xfs格式分区,需要指定 ftype=1 或者 d_type=true,如果在未使用ftype=1的方式格式化的OverlayFS文件系统上使用,docker可能出现未知问题。
3 排查解决
3.1 检查你的磁盘分区格式
bash
df -T /home/docker/containerd/daemon/io.containerd.snapshotter.v1.overlayfs
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-home xfs 477466844 56014448 421452396 12% /home
我的 docker 数据目录在 /home/docker ,所以查看 /home/docker/containerd/daemon/io.containerd.snapshotter.v1.overlayfs ,此路径也是报错信息中 提示的,你也可以直接查看 /home;
可见,我的 docker 数据目录所在磁盘分区格式就是 xfs;
3.2 检查 ftype 是否为 1
bash
xfs_info /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=256 agcount=4, agsize=29856256 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=119425024, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=58313, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
/dev/mapper/centos-home 路径就是我的 home 挂载的目录,也是 df -T 命令查看到的路径
可以看到 查到的信息中,倒数第四行 ftype=0,所以我需要将其改为 1
3.3 修改 ftype 为 1
将ftype 改为 1 ,需要格式化磁盘分区,现将 /home 目录的文件备份到其它目录 ,一定要备份!
bash
#备份完后,先卸载分区
umount /home
#格式化
mkfs.xfs -f -n ftype=1 /home
#格式化完成后再次挂载
mount -a
操作完成,可以重新安装 docker 进行测试。