在 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中完成吗?我不确定是否有办法做到这一点。

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

原文由 lapinkoira 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

符号链接是 docker 内部的一大挑战。在您的情况下,您可以挂载两个目录:

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

为了使符号链接在容器内部和外部都有效,它们必须是绝对路径并使用完全相同的名称。

通常,符号链接在 docker 中不起作用。我发现这很难。

原文由 Kemin Zhou 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 user2640621 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏