作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临着对 docker 容器进行磁盘配额的要求。具体来说,我想限制不在基本图像层中但在差异中的数据量。谷歌搜索“docker磁盘配额”建议使用 device mapper或 btrfs 后端。虽然能够在两个后端(具有不同语义)都有配额,但都有各自的问题:
解决这个问题的最佳方法是什么?
最佳答案
解决此问题的一种方法是将 diff 目录 /var/lib/docker/aufs/diff/$CONTAINER_ID
放入稀疏环回安装的 ext4 目录中。这有效地限制了用户可以在容器中存储/修改的数据量。这是我使用的 bash 代码:
do_enable_quota() {
local ID=$1
local QUOTA_MB=$2
local LOOPBACK=/var/lib/docker/aufs/diff/$ID-loopback
local LOOPBACK_MOUNT=/var/lib/docker/aufs/diff/$ID-loopback-mount
local DIFF=/var/lib/docker/aufs/diff/$ID
docker stop -t=0 $ID
sudo dd of=$LOOPBACK bs=1M seek=$QUOTA_MB count=0
sudo mkfs.ext4 -F $LOOPBACK
sudo mkdir -p $LOOPBACK_MOUNT
sudo mount -t ext4 -n -o loop,rw $LOOPBACK $LOOPBACK_MOUNT
sudo rsync -rtv $DIFF/ $LOOPBACK_MOUNT/
sudo rm -rf $DIFF
sudo mkdir -p $DIFF
sudo umount $LOOPBACK_MOUNT
sudo rm -rf $LOOPBACK_MOUNT
sudo mount -t ext4 -n -o loop,rw $LOOPBACK $DIFF
docker start $ID
}
这种方法非常适合我,但缺点是我需要包装“start”、“stop”和“rm”命令来考虑挂载。
关于docker - 如何为docker容器定义磁盘配额?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29029326/
我是一名优秀的程序员,十分优秀!