【问题标题】:Docker Share Data Between ContainersDocker 在容器之间共享数据
【发布时间】:2019-09-01 19:07:21
【问题描述】:

我有 3 个 docker 图像,每个图像都包含不同的数据集。我正在尝试创建一个卷,然后将这 3 个数据集容器安装到该卷。然后绑定从另一个主要图像创建的容器,并使用来自同一位置(主要图像)的这 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 命令也没有运气。我在这里错过了什么?

【问题讨论】:

  • 是否有可能将数据集提取到新图像中?你有用于构建dataset/abc:latestDockerfile 的副本吗?

标签: docker docker-compose docker-volume


【解决方案1】:

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

【讨论】:

  • 看起来这是实现我尝试做的最实用的方法。谢谢!
【解决方案2】:

命名你的容器并在不同的目录挂载卷,你可以使用--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

【讨论】:

  • 非常感谢 Dockerfile 部分。对于将使用 Dockerfile 完成的进一步工作,这个答案对我来说更合理。
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 2017-06-04
  • 2020-11-23
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
相关资源
最近更新 更多