不支持 overlay2 驱动程序

overlay2 driver not supported

我正在 运行安装 Docker AKS 集群中的 GitHub 代理。我可以 运行 使用 VFS 存储驱动程序成功,但是我想使用 Overlay 2,因为它更快。 我收到以下消息:

sudo dockerd &
...
INFO[2021-06-12T22:38:41.674415376Z] containerd successfully booted in 0.029163s
INFO[2021-06-12T22:38:41.692284696Z] parsed scheme: "unix"                         module=grpc
INFO[2021-06-12T22:38:41.692316597Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2021-06-12T22:38:41.692340397Z] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2021-06-12T22:38:41.692352097Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2021-06-12T22:38:41.693462211Z] parsed scheme: "unix"                         module=grpc
INFO[2021-06-12T22:38:41.693484611Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2021-06-12T22:38:41.693505611Z] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2021-06-12T22:38:41.693519612Z] ClientConn switching balancer to "pick_first"  module=grpc
ERRO[2021-06-12T22:38:41.702131518Z] failed to mount overlay: invalid argument     storage-driver=overlay2
INFO[2021-06-12T22:38:41.702558423Z] stopping event stream following graceful shutdown  error="context canceled" module=libcontainerd namespace=plugins.moby
INFO[2021-06-12T22:38:41.702674724Z] stopping healthcheck following graceful shutdown  module=libcontainerd
failed to start daemon: error initializing graphdriver: driver not supported

我的 /etc/docker/daemon.json 设置:

{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

文件系统类型:

Filesystem     Type     Size  Used Avail Use% Mounted on
overlay        overlay   49G   20G   29G  41% /
tmpfs          tmpfs     64M     0   64M   0% /dev
tmpfs          tmpfs    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1      ext4      49G   20G   29G  41% /etc/hosts
shm            tmpfs     64M  8.0K   64M   1% /dev/shm
tmpfs          tmpfs    3.9G   12K  3.9G   1% /run/secrets/kubernetes.io/serviceaccount

内核版本:5.4.0-1046-azure

overlay        overlay   49G   20G   29G  41% /

从文件系统来看,您似乎 运行 在一个容器中。使用 Docker-in-Docker,通常您会在 /var/lib/docker 处安装一个卷,以便从容器的覆盖文件系统中获取 docker 文件系统,因为您无法进行覆盖在叠加层之上。 docs on storage driver backing filesystems 显示每个存储驱动程序支持的底层文件系统。

如果您不能为 docker 实现卷挂载,那么您只能使用 vfs,它可以在任何地方运行但非常占用磁盘空间(为每一层复制整个文件系统),或者 fuse- overlayfs 通常用于无根安装,可能不适用于您的用例。

如果您在 Xen 主机上的 VM 内,则需要为 VM 激活 pygrub 并在 VM 内安装它自己的内核(而不是使用主机的内核)

参见:https://wiki.debian.org/PyGrub

  1. 虚拟机内部:
mkdir /boot/grub
apt-get install -y linux-image-amd64
cat > /boot/grub/menu.lst << EOF

default         0
timeout         2

title           Debian GNU/Linux
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro
initrd          /initrd.img

title           Debian GNU/Linux (recovery mode)
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro single
initrd          /initrd.img

EOF
  1. 注释掉
#kernel      = '/boot/vmlinuz-4.19.0-20-amd64'
#extra       = 'elevator=noop'
#ramdisk     = '/boot/initrd.img-4.19.0-20-amd64'

并添加:

bootloader = 'pygrub'
  1. 重启虚拟机