Docker容器中的巨大文件

我需要创build一个使用大文件(包含基因组数据,因此可以达到〜10GB大小)的Docker镜像(并从而创build容器)。

我该如何优化他们的使用? 我应该包括他们在容器(如COPY large_folder large_folder_in_container )? 有没有更好的方法来引用这样的文件? 重点是,我推动这个容器(这将是> 10GB)在我的私人存储库,这听起来很奇怪。 我想知道是否有一种将容器附加到容器上的方法,而不是把所有的容器都包装在一起。

谢谢。

我应该包括他们在容器(如COPY large_folder large_folder_in_container )?

如果你这样做了,那么这个包含在图像中 ,而不是容器中:你可以从图像中启动20个容器,实际使用的磁盘空间仍然是10GB。

如果您要从第一张图像制作另一张图像,分层文件系统将重新使用父图像中的图层,新图像仍然是“仅”10GB。

有没有更好的方法来引用这样的文件?

如果您已经有一些方法来分发数据,我会使用“绑定挂载”来将卷附加到容器。

 docker run -v /path/to/data/on/host:/path/to/data/in/container <image> ... 

这样,您可以更改图像,而且不必每次都重新下载大数据集。

如果您想使用registry来分发大数据集,但要单独pipe理对数据集的更改,则可以使用带有Dockerfile的数据卷容器,如下所示:

 FROM scratch COPY dataset /dataset VOLUME /dataset 

从应用程序容器中,您可以使用以下命令附加该卷

 docker run -d --name dataset <data volume image name> docker run --volumes-from dataset <image> ... 

无论哪种方式,我认为https://docs.docker.com/engine/tutorials/dockervolumes/是你想要的&#x3002;