2

几天来,我一直在尝试构建一个大型 Windows docker 映像,但在任何地方都找不到解决此问题的答案。

我不是在尝试构建生产容器解决方案。我只是想创建我的服务原型,但在 Windows 容器中运行。问题是我的服务现在依赖于大约 40GB 的数据,并且这些数据是从磁盘读取的。显然,这不是一个很好的方法,在我们可以将服务托管在生产环境中之前,必须对其进行重构。

我只想要一个快速而肮脏的解决方案来构建一个图像,所有这些数据都存储在容器的磁盘上,这样我就可以了解更多关于服务如何在容器内运行的信息。

我的图像结构最终将如下所示:

microsoft/windowsservercore -> mine/data_image -> mine/binary_image

数据.docker文件:

FROM microsoft/windowsservercore
WORKDIR /data/
COPY data .

构建命令:

docker build --compress -t mine/data_image -f data.dockerfile .

一段时间后,构建失败并显示以下消息:无法复制文件:无法复制目录:写入\?\Volume{8cf8bb9b-c1dd-46a3-b353-3c2198754bf8}\data:磁盘空间不足。

我知道这与 windowsfilter 磁盘驱动程序有关,但我无法在网上找到有关此驱动程序的文档。就好像它不存在一样。

欢迎任何与此问题相关的见解!

4

2 回答 2

0

您可以像这样覆盖默认的 20GB 大小:

dockerd --register-service --storage-opt size=60G
于 2020-05-01T18:58:45.700 回答
0

看起来您不能指定大小docker build

Docker CE 17.09中添加了在运行容器时指定大小的功能,因此该功能至少存在。因此,请观看#34947以获得不应该太远的分辨率。

我知道在 Linux 上,devicemapper 存储驱动程序有一个dm.basesize选项,您可以在守护程序上设置来修改所有容器开始时的卷大小。Windows 存储驱动程序可能有类似的选项?

于 2017-10-19T03:10:22.850 回答