不支持Docker容器中的符号链接?

时间:2019-03-26 16:36:05

标签: docker

我已经进行了一些搜索,看起来docker容器内不支持symlink,是否有解决方法?我还使用了一个挂载到我的主目录(在主机上)的卷,这是持久的。

当我加载容器时,主目录中的现有符号链接不起作用。我什至尝试在容器内创建符号链接,这也不起作用。

编辑:我正在玩> 1卷,可能已经发现了一些东西。如果我安装了一个反映符号链接路径的卷,那么它似乎可以工作。例如,如果我有一个数据文件夹在容器内的/ work目录上符号链接到/ media / disk1(并且/ work映射到主机上的/ home),则可以挂载另一个将/ media / disk1附加到的卷。 / work / data,(并且/ media / disk1是主机上的/ home / data的符号链接),然后symlink在容器内起作用!

2 个答案:

答案 0 :(得分:1)

如果有人遇到这个问题,我会回答我自己的问题。

首先,我们创建音量

docker volume create --name work type=none --opt device=/home/username --opt o=bind

然后,我们运行容器

docker container run -it --rm --mount source=work,target=/work

这样,我的主机主目录(/ home / username)就会映射到容器中的/ work目录。

现在,在我的主目录中,有一个符号链接数据-> / media / disk1 / data在容器内部不起作用。

但是,如果我设置另一个卷并进行安装,以使路径与符号链接匹配,即

docker volume create --name data type=none --opt device=/media/disk1/data --opt o=bind
docker container run -it --rm --mount source=work,target=/work --mount source=data,target=/work/data

然后,符号链接起作用。

我认为问题在于符号链接引用了容器“不知道”的路径,只有通过将该路径作为附加卷安装在正确的位置,符号链接才能起作用。

答案 1 :(得分:1)

符号链接需要相对于您的容器创建,而不是您的本地机器。使用以下命令访问容器中的命令行:

docker exec -it name_of_your_php_container bash

您的符号链接应类似于:

storage -> /var/www/html/storage/app/public

它不应该与您的本地机器相关,即

storage -> /Users/name/Sites/my-project/storage/app/public
相关问题