首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在docker容器中挂载带有符号链接的主机目录

在docker容器中挂载带有符号链接的主机目录
EN

Stack Overflow用户
提问于 2016-07-20 16:09:14
回答 5查看 122.5K关注 0票数 163

我用这个参数挂载了容器:

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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

在码头能做到吗?我不知道是否有办法这样做。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-10-29 18:27:43

在码头内,Symlink是一个巨大的挑战。在您的情况下,您可以挂载两个目录:

代码语言:javascript
代码运行次数:0
运行
复制
-v /home/test/:/home/test -v /mnt/mountedfile:/mnt/mountedfile

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

一般来说,符号链接在坞内不起作用。我发现这很难。

票数 215
EN

Stack Overflow用户

发布于 2017-10-14 22:56:41

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

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

票数 29
EN

Stack Overflow用户

发布于 2022-02-07 08:50:37

你好,谢谢你的帮助,在我的情况下,我正在努力激活我的角形nginx应用程序的https。

代码语言:javascript
代码运行次数:0
运行
复制
docker run -p 80:80 -p 443:443 \
   --name test \
   -v /etc/letsencrypt/live/exemple.com:/etc/nginx/certs \
   -v /home/admin/nginx-default.conf:/etc/nginx/conf.d/default.conf:ro test

不将链接cert.pem和privkey.pem挂载到坞内。

但是如果我像这样显式地使用所有文件路径

代码语言:javascript
代码运行次数:0
运行
复制
docker run -p 80:80 -p 443:443 \
   --name test \
   -v /etc/letsencrypt/live/example.com/cert.pem:/etc/nginx/certs/cert.pem \
   -v /etc/letsencrypt/live/example.com/privkey.pem:/etc/nginx/certs/privkey.pem \
   -v /home/admin/nginx-default.conf:/etc/nginx/conf.d/default.conf:ro test

一切都很好,我想你可以和码头工做同样的事。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38485607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档