使用 DeviceMapper 设置磁盘配额
Posted
技术标签:
【中文标题】使用 DeviceMapper 设置磁盘配额【英文标题】:Set disc quota with DeviceMapper 【发布时间】:2016-02-12 06:57:27 【问题描述】:我已将存储插件更改为DeviceMapper
。 Docker info
给出以下输出。
Server Version: 1.9.0
Storage Driver: devicemapper
Pool Name: docker-253:1-16-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 1.821 GB
Data Space Total: 268.4 GB
Data Space Available: 11.66 GB
Metadata Space Used: 2.101 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.145 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
首先,我不知道如何设置每个容器的配额。我应该在docker run
命令中使用flgas 吗?
【问题讨论】:
【参考方案1】:使用 devicemapper 作为存储插件,您不能设置每个容器的磁盘大小。每个容器的大小都是固定的。根据docker info
的输出,它表明固定大小约为100GB。但是,根据您的要求,您可以选择以下 2 个选项之一。
a.) 您可以将此固定大小从 100GB 更改为其他值,例如 20GB,但在这种情况下,所有容器的固定磁盘大小都将是 20GB。如果您想继续使用此选项,可以按照以下步骤操作:
停止 docker 服务,sudo service docker stop
删除现有的 docker 目录(在你的情况下是默认的
一个,即/var/lib/docker
)--注意这将删除你所有的
现有的 docker 镜像和容器。
使用选项 docker daemon -s devicemapper --storage-opt dm.basesize=20G
启动 docker 守护进程
或者代替步骤3,在文件/etc/default/docker
中添加选项DOCKER_OPTS='-g /var/lib/docker -s devicemapper --storage-opt dm.basesize=5G'
并重启docker服务
sudo service docker start
现在,无论您生成什么容器,磁盘大小都将是 20GB。
b.) 作为第二种选择,您可以从您设置的任何基本磁盘大小增加现有容器的磁盘大小。 (默认情况下为 100GB,如果您遵循第一个选项,则为 20GB)。为此,here 是一篇非常有用的文章,您可以关注。这可能有助于让您为不同的容器设置不同的磁盘大小。
希望这个答案对您的要求有用,谢谢。
【讨论】:
我之前和 Jérôme Petazzoni 谈过这个问题。他说,这个解决方案已被弃用,所以不起作用。 我已将解决方案与 docker 1.9 及其工作一起使用。甚至我已经使用此解决方案根据我们的要求修改了 docker 源代码,即仅在创建容器时,我发送容器的磁盘大小并更改其磁盘大小并调整 FS 大小,它也可以在那里工作。即使我看到here 一些工作将在未来的 docker 版本中实现类似的方法。如果有帮助,你可能会遵循这个。 您是否有关于此解决方案的教程或文章?听起来很有趣。磁盘配额限制是当今 Docker 非常有趣的部分!以上是关于使用 DeviceMapper 设置磁盘配额的主要内容,如果未能解决你的问题,请参考以下文章