【问题标题】:Limit Docker container disk size on Windows在 Windows 上限制 Docker 容器磁盘大小
【发布时间】:2020-08-27 14:10:35
【问题描述】:

我需要一种方法来限制容器的磁盘大小,主要是测试应用程序在磁盘空间不足时的行为方式。我尝试运行的 Docker 容器使用 Linux 映像。棘手的一点是我需要在 Windows 上执行此操作。我知道使用 tmpfs 和其他一些技巧来做到这一点,但它们都不适用于 Windows。我想我可以对我的实际磁盘进行分区并将其共享给容器,但我想避免这种情况以便于重复使用(就像其他人一样)。

我并不真正关心解决方案的工作原理,当然,我更希望通过在 docker 容器内的挂载来完成,这样我就可以只限制数据文件夹,而不是整个容器,而且最好是也可以与 docker-compose 一起使用,但我想这无论如何都非常棘手,所以即使没有它也会有所帮助!

【问题讨论】:

  • 在 Windows 上,使用 Docker Windows 映像,使用 Windows 主机内核?或者在 Windows 上,通过 HyperV 使用 Linux VM 内核,使用 Docker Linux 映像,挂载 Linux 卷? (使用 xfs 配额:stackoverflow.com/a/59423525/6309
  • @VonC 在 Windows 上,使用 Linux 映像。因此,作为 Windows,文件系统是 NTFS。
  • docker run -ti --storage-opt size=20g centos bash 或者通过Windows限制Docker挂载文件夹的大小。
  • @BogdanCondurache 因此,您将使用 Linux 虚拟机来访问 Linux 内核来运行您的 Linux Docker 映像。因此,您安装的卷将是基于 Linux 的文件系统,不是 NTFS。
  • @VonC 是的,但我无法对虚拟化 Linux 运行命令。

标签: windows docker docker-compose filesystems tmpfs


【解决方案1】:

您应该能够创建一个有大小限制的卷(用于您的 Linux 映像)。
来自docker volume create

Linux 上的内置本地驱动程序接受类似于 linux mount 命令的选项。您可以通过多次传递 --opt 标志来提供多个选项。一些挂载选项(例如 o 选项)可以采用逗号分隔的选项列表。可在此处找到可用安装选项的完整列表。

例如,以下创建一个名为 foo 的 tmpfs 卷,大小为 100 兆字节,uid 为 1000。

$ docker volume create --driver local \
   --opt type=tmpfs \
   --opt device=tmpfs \
   --opt o=size=100m,uid=1000 \
   foo

然后您可以声明要挂载的卷,in your docker-compose.yml

【讨论】:

  • 使用 tmpfs 在 Windows 或 Mac 机器上不起作用,它只适用于 Linux,如他们的文档中所述。
  • @BogdanCondurache 所以你需要使用 Linux VM,因为它们在 Windows 10 上可用(假设你使用的是最新的 Windows 10)
猜你喜欢
  • 2014-08-15
  • 2021-10-16
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2017-09-13
  • 2014-02-10
相关资源
最近更新 更多