如何限制容器可用的Docker文件系统空间

Bjö*_*obs 18 storage limit docker

一般情况是我们有一组服务器,我们希望使用Docker在其上设置虚拟集群.

为此,我们为不同的服务(Hadoop,Spark等)创建了Dockerfiles.

但是,关于Hadoop HDFS服务,我们的情况是docker容器可用的磁盘空间等于服务器可用的磁盘空间.我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成一个具有一定存储大小的额外datanode,以便为HDFS文件系统做出贡献.

我们有想法使用用ext4格式化的环回文件,并将它们安装在我们用作docker容器中的卷的目录中.但是,这意味着大量的性能损失.

我发现了另一个关于SO的问题(限制磁盘大小和Docker容器的带宽),但答案差不多已有1.5年了 - 关于docker的开发速度 - 很古老.

哪种方式或存储后端将允许我们

  • 限制每个容器的存储
  • 接近裸机性能
  • 不需要重新分区服务器驱动器

Von*_*onC 40

您可以在内存和CPU上指定运行时约束,但不能指定磁盘空间.

已请求设置磁盘空间约束的能力(问题12462,问题3804),但尚未实现,因为它取决于底层文件系统驱动程序.

此功能将在某个时刻添加,但不会立即添加.现在添加此功能有点困难,因为很多代码块都在从一个地方移动到另一个地方.完成此工作后,实现此功能应该更容易.

请记住,配额支持不能作为设备映射器的黑客添加,它必须实现尽可能多的存储后端,因此必须以一种方式实现,以便为其他添加配额支持存储后端.


2016年8月更新:如下所示,在3804评论中,PR 24771PR 24807已经合并.docker run现在允许为每个容器设置存储驱动程序选项

$ docker run -it --storage-opt size=120G fedora /bin/bash
Run Code Online (Sandbox Code Playgroud)

此(大小)将允许在创建时将容器rootfs大小设置为120G.
此选项仅适用于devicemapper,btrfs,overlay2,windowsfilter和zfs图驱动程序