Docker 个容器中的巨大文件
Huge files in Docker containers
我需要创建一个 Docker 使用大文件(包含基因组数据,因此大小达到 ~10GB)的图像(以及来自该图像的容器)。
我应该如何优化它们的使用?我是否应该将它们包含在容器中(例如 COPY large_folder large_folder_in_container
)?有没有更好的方法来引用这些文件?关键是,在我的私有存储库中推送这样的容器(大于 10GB)对我来说听起来很奇怪。我想知道是否有一种方法可以将某种卷附加到容器中,而无需将所有这些 GB 打包在一起。
谢谢。
Am I supposed to include them in the container (such as COPY large_folder large_folder_in_container
)?
如果您这样做,会将它们包含在 图像 中,而不是容器中:您可以从该图像启动 20 个容器,实际使用的磁盘 space仍然是 10 GB。
如果您要从第一个图像制作另一个图像,分层文件系统将重用父图像中的图层,新图像仍将是 "only" 10GB。
Is there a better way of referencing such files?
如果您已经有了一些分发数据的方法,我会使用 "bind mount" 将卷附加到容器。
docker run -v /path/to/data/on/host:/path/to/data/in/container <image> ...
这样您就可以更改图像,而不必每次都重新下载大型数据集。
如果您想使用注册表来分发大型数据集,但又想单独管理对数据集的更改,您可以使用具有 Dockerfile
的数据卷容器,如下所示:
FROM tianon/true
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/就是你想要的。
我在处理一个 900MB json 文件时遇到了问题,我更改了首选项中的内存限制并修复了它。
我需要创建一个 Docker 使用大文件(包含基因组数据,因此大小达到 ~10GB)的图像(以及来自该图像的容器)。
我应该如何优化它们的使用?我是否应该将它们包含在容器中(例如 COPY large_folder large_folder_in_container
)?有没有更好的方法来引用这些文件?关键是,在我的私有存储库中推送这样的容器(大于 10GB)对我来说听起来很奇怪。我想知道是否有一种方法可以将某种卷附加到容器中,而无需将所有这些 GB 打包在一起。
谢谢。
Am I supposed to include them in the container (such as
COPY large_folder large_folder_in_container
)?
如果您这样做,会将它们包含在 图像 中,而不是容器中:您可以从该图像启动 20 个容器,实际使用的磁盘 space仍然是 10 GB。
如果您要从第一个图像制作另一个图像,分层文件系统将重用父图像中的图层,新图像仍将是 "only" 10GB。
Is there a better way of referencing such files?
如果您已经有了一些分发数据的方法,我会使用 "bind mount" 将卷附加到容器。
docker run -v /path/to/data/on/host:/path/to/data/in/container <image> ...
这样您就可以更改图像,而不必每次都重新下载大型数据集。
如果您想使用注册表来分发大型数据集,但又想单独管理对数据集的更改,您可以使用具有 Dockerfile
的数据卷容器,如下所示:
FROM tianon/true
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/就是你想要的。
我在处理一个 900MB json 文件时遇到了问题,我更改了首选项中的内存限制并修复了它。