一般情况是,我们有一个服务器集群,并且我们想使用Docker在服务器集群之上建立虚拟集群。
为此,我们为不同的服务(Hadoop,Spark等)创建了Dockerfile。
但是,关于Hadoop HDFS服务,我们面临这样一种情况,即Docker容器可用的磁盘空间等于服务器可用的磁盘空间。我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成具有一定存储大小的附加数据节点,以构成HDFS文件系统。
我们的想法是使用以ext4格式格式化的环回文件,并将其挂载到我们用作docker容器中卷的目录上。但是,这意味着很大的性能损失。
我发现了另一个关于SO的问题(限制Docker容器的磁盘大小和带宽),但是答案已有将近1.5年的历史了-就Docker的发展速度而言-是古老的。
哪种方式或存储后端将使我们能够
您可以在内存和CPU上指定运行时约束,但不能指定磁盘空间。
已要求设置对磁盘空间的约束的功能(问题12462,问题3804),但尚未实现,因为它取决于基础文件系统驱动程序。
此功能将在某个时候添加,但不是立即添加。现在添加此功能要困难一些,因为许多代码块正在从一个地方移到另一个地方。完成这项工作之后,应该更容易实现此功能。 请记住,不能将配额支持作为hack添加到devicemapper,它必须为尽可能多的存储后端实现,因此必须以一种易于实现的方式来实现配额支持存储后端。
此功能将在某个时候添加,但不是立即添加。现在添加此功能要困难一些,因为许多代码块正在从一个地方移到另一个地方。完成这项工作之后,应该更容易实现此功能。
请记住,不能将配额支持作为hack添加到devicemapper,它必须为尽可能多的存储后端实现,因此必须以一种易于实现的方式来实现配额支持存储后端。
2016年8月更新:如下所示,并且在发行号3804中,此后PR 24771和PR 24807被合并。docker run现在允许为每个容器设置存储驱动程序选项
docker run
$ docker run -it --storage-opt size=120G fedora /bin/bash
此(大小)将允许在创建时将容器rootfs大小设置为120G。 此选项仅适用于devicemapper,btrfs,overlay2,windowsfilter和zfs图形驱动程序