You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制启用SSH的Ubuntu 20.04 Docker容器磁盘容量?

容器磁盘空间限制问题解决办法

首先明确核心问题:你添加的storage_opt: size: 100G不起作用,是因为Docker默认的overlay2存储驱动不支持该参数——这个选项仅对devicemapper、btrfs这类特定存储驱动生效,而overlay2直接共享主机文件系统层,所以容器内执行df -H会显示主机磁盘状态。

下面给你两种实用的解决思路:

方法一:用独立镜像文件模拟磁盘(最直接)

这种方式相当于给容器分配一个独立"虚拟磁盘",与主机磁盘隔离:

  1. 在主机上创建100G稀疏镜像文件(不会立刻占满100G,实际占用随数据量增长):
    dd if=/dev/zero of=/opt/container_disk.img bs=1G count=0 seek=100
    
  2. 将镜像格式化为ext4文件系统:
    mkfs.ext4 /opt/container_disk.img
    
  3. 修改docker-compose.yml,把镜像文件挂载到容器内指定目录(比如/mnt/container_storage):
    services:
      ubuntu-vm:
        # 保留原有配置
        volumes:
          - /opt/container_disk.img:/mnt/container_storage:rw
    
    后续容器内写入/mnt/container_storage的内容会被限制在100G以内,不会无占用主机磁盘。

方法二:用cgroup磁盘配额(Docker原生支持,需主机配置)

若你的Docker版本在20.10以上,且主机文件系统为ext4或xfs并开启quota功能,可直接通过资源限制实现:
修改docker-compose.yml,给容器添加存储限制:

services:
  ubuntu-vm:
    # 保留原有配置
    resources:
      limits:
        storage: 100G

这种方式无需额外创建镜像文件,但要满足两个前提:

  • 主机文件系统开启quota(ext4挂载需加usrquota,grpquota参数,xfs需加prjquota)
  • Docker使用cgroupv2(新版本默认已启用)

另外你提到的"映射主机磁盘到容器/dev/sdx"也可行,操作和镜像文件方式类似,只需把/opt/container_disk.img替换为真实分区路径(比如/dev/sdb1)即可。

内容的提问来源于stack exchange,提问作者user20257513

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:52:44