一尘不染

如何使用Docker的--volumes-from映射卷路径?

docker

我是Docker的新手,对使用该--volumes-from功能感到兴奋,但是有些事情我不了解。

如果我想使用--volumes- from两个仅数据容器,每个容器都导出名为的卷/srv,如何防止卷路径冲突?使用创建绑定装载时,我可以映射卷名称[host- dir]:[container-dir]。我该怎么做--volumes-from

所以我想要的看起来像这样:

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

阅读 1466

收藏
2020-06-17

共1个答案

一尘不染

可以完成,但目前在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

2020-06-17