openEuler 22.03 LTS 的 KVM 虚拟机,11 月 3 日晚上同事报过来,docker 装完起不来。宿主机是 CentOS 7.9,virsh list 里这台叫 oe-vm01,4C8G,根分区 40G。

[root@oe-vm01 ~]# systemctl start docker
Job for docker.service failed because the start request timed out.
See "systemctl status docker.service" and "journalctl -xe" for details.

装的 docker-ce 20.10.24,yum 源走的华为云镜像。先怀疑 SELinux 挡了,getenforce 是 Enforcing,setenforce 0 又 start 一次,照样超时。这条线跟最终原因没关系,排除。

翻 journalctl。

[root@oe-vm01 ~]# journalctl -u docker -n 3 --no-pager
11月 03 22:14:31 oe-vm01 dockerd[3112]: failed to start daemon: error initializing graphdriver: backing filesystem: xfs does not support d_type and overlay2 driver is not supported
11月 03 22:14:31 oe-vm01 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE

d_type。看根分区:

[root@oe-vm01 ~]# xfs_info / | grep ftype
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0

ftype=0,overlay2 要 ftype=1。这台虚拟机建的时候 mkfs.xfs 没带 -n ftype=1,根分区上还有业务数据,不能重建。virsh 挂了一块 50G 的盘进去当 /var/lib/docker。

[root@kvm01 ~]# virsh attach-disk oe-vm01 /data/kvm/oe-vm01-docker.qcow2 vdb \
  --targetbus virtio --subdriver qcow2 --persistent
Disk attached successfully

虚拟机里格盘,这次带参数。

[root@oe-vm01 ~]# mkfs.xfs -n ftype=1 -f /dev/vdb
meta-data=/dev/vdb               isize=512    agcount=4, agsize=3276800 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

写 fstab,挂到 /var/lib/docker。

[root@oe-vm01 ~]# echo '/dev/vdb /var/lib/docker xfs defaults 0 0' >> /etc/fstab
[root@oe-vm01 ~]# mkdir -p /var/lib/docker && mount -a
[root@oe-vm01 ~]# df -h /var/lib/docker
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb         50G  105M   50G   1% /var/lib/docker

再起 docker。

[root@oe-vm01 ~]# systemctl start docker && systemctl is-active docker
active
[root@oe-vm01 ~]# docker info | grep -i "storage driver"
 Storage Driver: overlay2

overlay2 认了。跑个容器验证。

[root@oe-vm01 ~]# docker run -d --name web -p 80:80 nginx:1.24-alpine
6f1c2a9e4b7d04d5a8c3e1b9f7a2d6c4e8b0f3a5d7c9e1b3a5f7d9c1e3b5a7d9
[root@oe-vm01 ~]# curl -s -o /dev/null -w "%{http_code}\n" 127.0.0.1
200

这台跑 docker 部署的 openEuler 虚拟机后面又挂了两块盘上去,ftype 全部带参数格的。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。