如何将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。