解决此问题的一种方法是将 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
}
Run Code Online (Sandbox Code Playgroud)
这种方法非常适合我,但缺点是我需要包装“start”、“stop”和“rm”命令来考虑挂载。
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |