我用这个参数挂载了容器:
-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
在码头能做到吗?我不知道是否有办法这样做。
我知道我可以直接挂载符号链接指向的位置,但我只是想知道这是否可能。
发布于 2016-10-29 10:27:43
在码头内,Symlink是一个巨大的挑战。在您的情况下,您可以挂载两个目录:
-v /home/test/:/home/test -v /mnt/mountedfile:/mnt/mountedfile
要使符号链接在容器内部和外部工作,它们必须是绝对路径,并使用完全相同的名称。
一般来说,符号链接在坞内不起作用。我发现这很难。
发布于 2017-10-14 14:56:41
一种解决方案是让Docker挂载原始文件,但使用readlink -f
打印文件的实际位置。这样,您仍然可以引用命令中的符号链接位置。
docker run -it -v $(readlink -f /home/test/):/home/test/ ...
发布于 2022-02-07 00:50:37
你好,谢谢你的帮助,在我的情况下,我正在努力激活我的角形nginx应用程序的https。
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挂载到坞内。
但是如果我像这样显式地使用所有文件路径
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
一切都很好,我想你可以和码头工做同样的事。
https://stackoverflow.com/questions/38485607
复制