为什么Docker`/ var / lib / docker / overlay2`目录不能在overlay2 fs上

时间:2018-10-23 08:00:40

标签: docker

/var/lib/docker/overlay2目录位于overlay2 fs上时,Docker无法以以下内容开头:

level=error msg="'overlay2' is not supported over overlayfs" storage-driver=overlay2
level=error msg="[graphdriver] prior storage driver overlay2 failed: backing file system is unsupported for this graph driver"
Error starting daemon: error initializing graphdriver: backing file system is unsupported for this graph driver

相关代码似乎是https://github.com/moby/moby/blob/master/daemon/graphdriver/overlay2/overlay.go#L162,但没有说明原因!

2 个答案:

答案 0 :(得分:0)

我认为您可以使用/var/lib/docker/overlay2检查xfs_info目录,是否可以支持overlay2

例如,

$ xfs_info /var/lib/docker/overlay2 | grep ftype
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

如果输出为ftype=1,则可以支持overlay2。 有关更多详细信息,请参见What is d_type and why Docker overlayfs need it

希望它能对您有所帮助。 :^)

答案 1 :(得分:0)

正如作者在GitHub commit comment中所解释的那样,覆盖层上的覆盖会导致“非常古怪的行为”,因此Docker当前不受支持。

不清楚您为什么要尝试这样做。但是一个常见的原因是在Docker内部运行Docker。在这种情况下,您只需将主机上的文件夹安装到容器内的/var/lib/docker即可,例如:

docker run -d -v /my/storage:/var/lib/docker docker-in-docker-image

此外,在为Docker-in-Docker构建映像时,向您的Dockerfile添加VOLUME /var/lib/docker语句,以确保该文件夹是安装点。官方docker:dind图片也是如此:https://github.com/docker-library/docker/blob/master/18.09/dind/Dockerfile#L40