Docker在容器之间共享数据

时间:2019-09-01 19:07:21

标签: docker docker-compose docker-volume

我有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命令也没有运气。我在这里想念什么?

2 个答案:

答案 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-fromdocker 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