我有3个docker映像,每个映像都包含不同的数据集。我正在尝试创建一个卷,然后将这3个数据集容器安装到该卷。然后绑定从另一个主要图像创建的容器,并使用来自同一位置(这是主要位置)的那三个单独的数据集。
这三个容器的文件系统如下所示:
container1: /datasets/xxx/01.jpg...
container2: /datasets/yyy/01.jpg...
container3: /datasets/zzz/01.jpg...
我的docker命令流如下所示:
docker volume create my-data
docker run -ti -d -v my-data:/datasets dataset/xxx:latest
docker run -ti -d -v my-data:/datasets dataset/yyy:latest
docker run -ti -d -v my-data:/datasets dataset/zzz:latest
最后是主要的:
docker run -ti -v my-data:/datasets major-application/app:latest
这些步骤之后,当我在从主要应用程序映像创建的容器中执行ls /datasets
时,我只会看到/datasets/xxx/01.jpg...
目录。同样,使用--volumes-from
命令也没有运气。我在这里想念什么?
答案 0 :(得分:2)
如何将xxx,yyy,zzz文件夹安装到不同的卷上,如下所示:
docker run -ti -d -v my-data-xxx:/datasets/xxx dataset/xxx:latest
docker run -ti -d -v my-data-yyy:/datasets/yyy dataset/yyy:latest
docker run -ti -d -v my-data-zzz:/datasets/zzz dataset/zzz:latest
然后是主要的:
docker run -ti -v my-data-xxx:/datasets/xxx -v my-data-yyy:/datasets/yyy -v my-data-zzz:/datasets/zzz major-application/app:latest
答案 1 :(得分:1)
在不同目录中命名容器和挂载卷,可以使用--volumes-from
从每个容器挂载卷:
docker run --rm -it --name xxx -d -v xxx:/datasets/xxx dataset/xxx:latest
docker run --rm -it --name yyy -d -v yyy:/datasets/yyy dataset/yyy:latest
docker run --rm -it --name zzz -d -v zzz:/datasets/zzz dataset/zzz:latest
注意:您不必显式create
卷。
然后使用--volumes-from
:docker run --rm -it --volumes-from xxx --volumes-from yyy --volumes-from zzz ubuntu:18.04 ls -alF /datasets
如果图像中的数据集是静态的(dataset/abc:latest
,则可以使用数据集扩展major-application/app:latest
图像,例如Dockerfile
:
FROM dataset/xxx:latest as xxx
FROM dataset/yyy:latest as yyy
FROM dataset/zzz:latest as zzz
FROM major-application/app:latest
VOLUME [/datasets]
COPY --from=xxx /datasets/xxx /datasets/xxx
COPY --from=yyy /datasets/yyy /datasets/yyy
COPY --from=zzz /datasets/zzz /datasets/zzz