如何将Docker容器卷安装到不同的路径?

tha*_*smo 5 lxc docker

容器#1以为其定义的卷运行/data,并且我想使用run选项--volumes-from将此卷装载到另一个容器,但我想更改第二个容器的路径.

换句话说/data,容器#1应安装/custom/data在容器#2内.

那可能吗?这有解决方案吗?

谢谢!

fre*_*ees 2

目前无法将自定义选项添加到--volumes-from.

有两种可能的解决方案。然而,两者都不是完美的......

解决方案1

就我个人而言,我不喜欢这个,因为它只适用于 Linux。它不适用于 Boot2Docker。如何使用 Docker 的 --volumes-from 映射卷路径?

解决方案2

第二种解决方案是使用符号链接。这非常有效,但最后有一个警告。

使用交互式 shell 和容器 #1 中的卷运行 docker 容器;busybox 非常适合此目的:

docker run --rm -it --volumes-from container-1-name busybox
Run Code Online (Sandbox Code Playgroud)

其中container-1-name是容器#1 的名称。

在打开的 shell 中,您可以创建一个指向 到 的符号/custom/data链接/data。假设根已经/custom存在(mkdir如果不存在则先使用),输入:

ln -s /data /custom/data
Run Code Online (Sandbox Code Playgroud)

现在您可以检查此链接是否存在。你应该看到这样的东西:

/ # ls -l custom/
total 0
lrwxrwxrwx    1 root     root             5 Mar  4 08:09 data -> /data
Run Code Online (Sandbox Code Playgroud)

然后这个容器就完成了。出口。现在,如果您创建一个新容器而不是使用,它可以访问via--volumes-from container-1-name的内容。/data/custom/data

警告:您应该注意,使用的容器--volumes-from container-1-name将同时具有/data/custom/data。使用此解决方案无法解决这个问题。在大多数情况下,我想这很好。但是,如果这对您没有好处,您将需要寻找其他解决方案。