我正在运行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 上,并设置了一个连接点以指向它在新目录中的位置。
我最终想起来是这种情况,并将目录移回原处。重新启动我的电脑后,错误不再发生。
就像我说的,这很小众,但它帮我解决了问题。