一般情况是我们有一组服务器,我们希望使用Docker在其上设置虚拟集群。
为此,我们为不同的服务(Hadoop,Spark等)创建了Dockerfiles。
但是,关于Hadoop HDFS服务,我们遇到Docker容器可用的磁盘空间等于服务器可用磁盘空间的情况。我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成一个具有一定存储大小的额外数据节点,以便为HDFS文件系统做出贡献。
我们有想法使用用ext4格式化的环回文件,并将它们安装在我们用作docker容器中的卷的目录中。但是,这意味着性能损失很大。
我在SO上发现了另一个问题(Limit disk size and bandwidth of a Docker container),但答案差不多是1.5岁 - 关于码头工人的发展速度 - 很古老。
哪种方式或存储后端允许我们
答案 0 :(得分:35)
您可以在内存和CPU上指定runtime constraints,但不能在磁盘空间中指定。
已请求(issue 12462,issue 3804)设置磁盘空间约束的功能,但尚未实现,因为它取决于底层文件系统驱动程序。
此功能将在某个时刻添加,但不会立即添加。现在添加此功能有点困难,因为很多代码块都在从一个地方移动到另一个地方。完成此工作后,实现此功能应该更容易。
请注意,配额支持不能作为设备映射器的黑客添加,必须实现尽可能多的存储后端,因此必须以一种易于使用的方式实现为其他存储后端添加配额支持。
2016年8月更新:如下所示,issue 3804 comment,PR 24771和PR 24807已合并。 docker run
现在允许为每个容器设置存储驱动程序选项
$ docker run -it --storage-opt size=120G fedora /bin/bash
此(大小)允许在创建时将容器rootfs大小设置为120G 此选项仅适用于devicemapper,btrfs,overlay2,windowsfilter和zfs图驱动程序