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

时间:2016-07-20 16:09:15

标签: 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

甚至可以在码头工作中完成?我不确定是否有办法做到这一点。

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

2 个答案:

答案 0 :(得分:92)

Symlink是docker内部的一大挑战。在您的情况下,您可以安装两个directorires

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

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

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

答案 1 :(得分:6)

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

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