我是Docker的新手,对使用该--volumes-from功能感到兴奋,但是有些事情我不了解。
--volumes-from
如果我想使用--volumes- from两个仅数据容器,每个容器都导出名为的卷/srv,如何防止卷路径冲突?使用创建绑定装载时,我可以映射卷名称[host- dir]:[container-dir]。我该怎么做--volumes-from?
--volumes- from
/srv
[host- dir]:[container-dir]
所以我想要的看起来像这样:
docker run --name=DATA1 --volume=/srv busybox true docker run --name=DATA2 --volume=/srv busybox true docker run -t -i -rm --volumes-from DATA1:/srv1 --volumes-from DATA2:/srv2 ubuntu bash
可以完成,但目前在Docker命令行界面中尚不支持。
查找卷目录:
docker inspect DATA1 | grep "vfs/dir" # output something like: # "/srv": "/var/lib/docker/vfs/dir/<long vol id>"
因此,您可以自动执行此操作,并将这些目录挂载到您选择的挂载点:
# load directories in variables: SRV1=$(docker inspect DATA1 | grep "vfs/dir" | awk '/"(.*)"/ { gsub(/"/,"",$2); print $2 }') SRV2=$(docker inspect DATA2 | grep "vfs/dir" | awk '/"(.*)"/ { gsub(/"/,"",$2); print $2 }')
现在,通过真实目录而不是–volumes-from挂载这些卷:
docker run -t -i -v $SRV1:/srv1 -v $SRV2:/srv2 ubuntu bash
IMO,功能是相同的,因为这与使用时所做的相同--volumes-from。