Docker容器中的巨大文件

Docker容器中的巨大文件,docker,dockerfile,docker-container,Docker,Dockerfile,Docker Container,我需要创建一个Docker映像(以及来自该映像的容器),该映像使用大文件(包含基因组数据,因此大小达到10GB) 我应该如何优化它们的使用?我是否应该将它们包含在容器中(例如,复制大文件夹大文件夹在容器中)?有没有更好的方法来引用这些文件?关键是,在我的私有存储库中推送这样的容器(可能大于10GB)听起来很奇怪。我想知道是否有一种方法可以将某种体积附加到容器上,而不必将所有GBs打包在一起 多谢各位 我是否应该将它们包含在容器中(例如,复制大文件夹大文件夹在容器中) 如果这样做,则会将它们包含在

我需要创建一个Docker映像(以及来自该映像的容器),该映像使用大文件(包含基因组数据,因此大小达到10GB)

我应该如何优化它们的使用?我是否应该将它们包含在容器中(例如,
复制大文件夹大文件夹在容器中
)?有没有更好的方法来引用这些文件?关键是,在我的私有存储库中推送这样的容器(可能大于10GB)听起来很奇怪。我想知道是否有一种方法可以将某种体积附加到容器上,而不必将所有GBs打包在一起

多谢各位

我是否应该将它们包含在容器中(例如,
复制大文件夹大文件夹在容器中

如果这样做,则会将它们包含在映像中,而不是容器中:您可以从该映像启动20个容器,实际使用的磁盘空间仍然是10GB

如果要从第一个映像生成另一个映像,分层文件系统将重用父映像中的层,并且新映像仍然是“仅”10GB

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

如果您已经有了分发数据的方法,我将使用“绑定装载”将卷附加到容器

docker run -v /path/to/data/on/host:/path/to/data/in/container <image> ...
从应用程序容器中,您可以使用以下方式附加该卷:

docker run -d --name dataset <data volume image name>
docker run --volumes-from dataset <image> ...
docker run-d——名称数据集
docker运行--数据集中的卷。。。

不管怎样,我想这就是你想要的。

我遇到了900MB json文件的问题,更改了首选项中的内存限制,它解决了这个问题


这肯定很有用。但当我从注册表中弹出图像(运行容器)时,我担心系统的快速性。我正在尝试将其放入CI/CD管道中,这需要(在部署阶段)将容器加载到新的OpenStack实例上(通过打包器)。因为这样的实例总是不同的,所以每次我通过CD管道将一个巨大的容器加载到新创建的OpenStack实例中(没有任何先前加载的层),从而在每次提交时移动10GB。这是你能找到的最好的解决方案吗?@Eleanore一旦图像被加载到你的奴隶的本地docker注册表中,容器就会立即启动。但是,如果图像发生更改,最好是在前一个图像的基础上以增量方式构建一个新图像,并且只包括更改。也就是说,如果所有10GB的图像都从一个图像更改到下一个图像。。。您确实遇到了一个问题。如果没有任何入口点,则无法启动容器。是另一种选择。请参考此答案
docker run -d --name dataset <data volume image name>
docker run --volumes-from dataset <image> ...