小编典典

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

docker

一般情况是,我们有一个服务器集群,并且我们想使用Docker在服务器集群之上建立虚拟集群。

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

但是,关于Hadoop
HDFS服务,我们面临这样一种情况,即Docker容器可用的磁盘空间等于服务器可用的磁盘空间。我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成具有一定存储大小的附加数据节点,以构成HDFS文件系统。

我们的想法是使用以ext4格式格式化的环回文件,并将其挂载到我们用作docker容器中卷的目录上。但是,这意味着很大的性能损失。

我发现了另一个关于SO的问题(限制Docker容器的磁盘大小和带宽),但是答案已有将近1.5年的历史了-就Docker的发展速度而言-是古老的。

哪种方式或存储后端将使我们能够

  • 限制每个容器的存储
  • 具有近乎裸机的性能
  • 不需要对服务器驱动器进行重新分区

阅读 422

收藏
2020-06-17

共1个答案

小编典典

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

已要求设置对磁盘空间的约束的功能(问题12462问题3804),但尚未实现,因为它取决于基础文件系统驱动程序。

此功能将在某个时候添加,但不是立即添加。现在添加此功能要困难一些,因为许多代码块正在从一个地方移到另一个地方。完成这项工作之后,应该更容易实现此功能。

请记住,不能将配额支持作为hack添加到devicemapper,它必须为尽可能多的存储后端实现,因此必须以一种易于实现的方式来实现配额支持存储后端。


2016年8月更新:如下所示,并且在发行号3804中此后PR
24771
PR
24807
被合并。docker run现在允许为每个容器设置存储驱动程序选项

$ docker run -it --storage-opt size=120G fedora /bin/bash

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

2020-06-17