为什么Docker容器中有些主机卷会报“符号链接层数过多”的错误?

为什么Docker容器中有些主机卷会报“符号链接层数过多”的错误?

我正在运行docker,并且挂载了主机目录:

$ docker run -v /usr/groups/thing -ti imagename /bin/bash

/usr/groups/thing/foo可以访问以下位置的文件:

# ls /usr/groups/thing/foo
a b c

但文件/usr/groups/thing/bar不是:

# ls /usr/groups/thing/bar
ls: cannot open directory /usr/groups/thing/bar: Too many levels of symbolic links

这是在 Debian 上,并且/usr/groups/thing是一个自动安装的 NFS 卷。

答案1

这是由于容器运行时目录未自动挂载造成的。我原以为那/usr/groups/thing是自动挂载点,但显然子目录是单独自动挂载的。解决方案是确保每个子目录都已挂载进入容器:

$ (cd /usr/groups/thing/foo; cd /usr/groups/thing/bar)
$ docker run -v /usr/groups/thing -ti imagename /bin/bash
# ls /usr/groups/thing/bar
d e f

答案2

我刚刚遇到了这个问题,虽然我找到的解决方案并不适合所有人,但正是我的设置中的一个微妙部分导致了这个问题。

为了节省空间,我将 Docker 目录从我%APPDATA%的 SSD 上的目录移动到了更大的 HDD 上,并设置了一个连接点以指向它在新目录中的位置。

我最终想起来是这种情况,并将目录移回原处。重新启动我的电脑后,错误不再发生。

就像我说的,这很小众,但它帮我解决了问题。

相关内容