【问题标题】:How to create a windows docker image larger than 20GB?如何创建大于 20GB 的 windows docker 镜像?
【发布时间】:2018-03-30 22:47:55
【问题描述】:

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

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

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

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

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

data.dockerfile:

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 磁盘驱动程序有关,但我无法在网上找到有关此驱动程序的文档。好像不存在一样。

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

【问题讨论】:

  • 我真的不认为您应该将数据放入 docker imsge 本身。数据应位于跨版本共享的卷内...

标签: docker docker-for-windows docker-build


【解决方案1】:

看起来像你can't specify a size for docker build yet

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

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

【讨论】:

    【解决方案2】:

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

    dockerd --register-service --storage-opt size=60G
    

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 2019-08-03
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多