为什么 Docker 容器中的某些主机卷会给出“符号链接级别太多”的错误?

Pet*_*ake 10 nfs symbolic-link autofs docker

我正在运行 docker 并安装了主机目录:

$ docker run -v /usr/groups/thing -ti imagename /bin/bash
Run Code Online (Sandbox Code Playgroud)

中的文件/usr/groups/thing/foo可访问:

# ls /usr/groups/thing/foo
a b c
Run Code Online (Sandbox Code Playgroud)

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

# ls /usr/groups/thing/bar
ls: cannot open directory /usr/groups/thing/bar: Too many levels of symbolic links
Run Code Online (Sandbox Code Playgroud)

这是在 Debian 上,/usr/groups/thing是一个自动挂载的 NFS 卷。

Pet*_*ake 11

这是由于在容器运行时未自动挂载目录造成的。我原以为这/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
Run Code Online (Sandbox Code Playgroud)