如何将Docker容器卷装入不同的path?

容器#1运行一个为/data定义的卷,我想使用运行选项--volumes-from将此卷装载到另一个容器,但是我想更改第二个容器的path。

换句话说,来自容器#1的/data应该安装到容器#2中的/custom/data

那可能吗? 有这个解决scheme吗?

谢谢!

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

有两种可能的解决scheme。 但是,两者都不是完美的…

解决scheme1

就个人而言,我不喜欢这个,因为它只能在Linux上运行。 它不适用于Boot2Docker。 如何映射使用Docker的卷path–volumes-from?

解决scheme2

第二种解决scheme是使用sym-link。 这工作相当好,但最后还是有一个警告。

使用交互式shell和容器#1中的卷运行Docker容器; busybox是这个理想的select:

 docker run --rm -it --volumes-from container-1-name busybox 

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

在打开的shell中,可以创build一个从/custom/data指向/data的符号链接。 假设根目录/custom已经存在(如果不是,先使用mkdir ),键入:

 ln -s /data /custom/data 

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

 / # ls -l custom/ total 0 lrwxrwxrwx 1 root root 5 Mar 4 08:09 data -> /data 

那么你完成了这个容器。 出口。 现在,如果创build一个新的容器,而不是使用--volumes-from container-1-name ,则可以通过/custom/data访问/data的内容。

警告:您应该注意,使用--volumes-from container-1-name将包含/data/custom/data 。 使用这个解决scheme是没有办法的。 在大多数情况下,我想这是好的。 但是,如果这对你没有好处,你将需要find另一个解决scheme。