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

xne*_*net 3 docker

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

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

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

xne*_*net 10

我会回答我自己的问题,以防其他人遇到这个问题。

首先,我们创建卷

docker volume create --name work type=none --opt device=/home/username --opt o=bind
Run Code Online (Sandbox Code Playgroud)

然后,我们运行容器

docker container run -it --rm --mount source=work,target=/work
Run Code Online (Sandbox Code Playgroud)

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

现在,在我的主目录中,有一个符号链接 data -> /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
Run Code Online (Sandbox Code Playgroud)

然后,符号链接起作用。

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