在docker容器中装入一个带有符号链接的主机目录

我用这个参数安装了容器:

-v / home / test /:/ home / test

在主机里面/ home / test中有一个指向/ mnt /文件夹的符号链接。

但是,这个链接,虽然可以看到在哪里指向,似乎在容器内部破碎:

root@f93f72b45013:/var/www/html# cd /home/test/ root@f93f72b45013:/home/test# ls -lrt total 11956 lrwxrwxrwx. 1 root root 40 Jul 20 15:55 file -> /mnt/mountedfile/ root@f93f72b45013:/home/test# ls -lrt file/* ls: cannot access file/*: No such file or directory 

这是甚至有可能在docker工作? 我不确定是否有办法做到这一点。

我知道我可以直接挂载符号链接指向的地方,但是我只是想知道这是否是可能的。

在Docker中,符号链接是一个很大的挑战。 在你的情况下,你可以安装两个导演

-v / home / test /:/ home / test -v / mnt / mountedfile:/ mnt / mountedfile

要在容器内部和外部工作的符号链接必须是绝对path,并使用完全相同的名称。

一般而言,符号链接在docker中不起作用。 我发现这很难。

一个解决scheme是让Docker装载原始文件,但使用readlink -f打印文件的实际位置。 这样,你仍然可以在你的命令中引用符号链接的位置,例如

docker run -it -v $(readlink -f /home/test/):/home/test/ ...