首页/云/Docker 容器速查/docker run --blkio-weight 块 IO 权重
资源与安全50 条

docker run --blkio-weight 块 IO 权重

按权重分配块设备带宽(10-1000):多个容器争抢同一块盘时按比例分配读写机会,属于竞争占比而不是绝对限速。

Docker 容器速查云更新于 2026-10-13

块设备 IO 权重

按权重分配块设备带宽,取值从十到一千:多个容器争抢同一块盘时按比例分配读写机会,属于竞争占比而不是绝对限速。需要绝对上限要用按设备读写限速的参数。

基本信息

语法--blkio-weight=<10-1000>
性质相对权重,非绝对限速
生效条件多个容器存在 IO 竞争时
绝对限速按设备读写的速率限制参数
核对inspect 里的对应字段

典型使用场景

  • 同一块盘上区分数据库与批处理任务的 IO 优先级
  • 避免大批量导入把在线服务的磁盘响应拖垮
  • 压测时构造 IO 竞争观察分配比例
  • 核对权重是否真正写入
  • 容量评估时确认 IO 资源的分配预期

设置与核对

设置与核对
docker run -d --blkio-weight=500 --name db postgres:16-alpine
docker run -d --blkio-weight=100 --name loader loader:1.2
docker inspect -f '{{.HostConfig.BlkioWeight}}' db      # 核对生效值

参数与适用判断

参数性质适用判断
权重参数相对权重竞争时按比例分配
读写速率限制绝对上限需要硬性限速时
权重相同平均分配无优先级差异
无竞争权重不体现空闲时看不出差异
需要宿主启用块 IO 控制器;单容器要绝对上限时改用按设备的速率限制参数。
权重在无竞争时看不出差异,验证时要同时制造两个容器的 IO 负载。
宿主未启用 IO 控制器时不生效,排查先看 cgroup 目录下的控制器列表。
权重与绝对限速可以同时使用,前者管竞争比例,后者管上限。
不同存储介质上的实际表现差异较大,结论要按实际硬件压测得出。
核对生效值时若显示为零,说明参数没有真正写入,要回头检查启动命令。
同一块盘上的容器若使用不同的存储驱动或不同的数据目录,权重的影响范围也会变化,压测结论要注明硬件与布局差异。
权重类参数与内核调度实现相关,较老内核上可用的控制器可能不完整,选型前先确认宿主能力。

易错点

  • 权重在无竞争时看不出差异,验证要同时制造两个容器的 IO 负载
  • 宿主未启用 IO 控制器时不生效,排查先看控制器列表
  • 把权重当绝对限速使用,容量评估会出现偏差
  • 核对时忽略字段为零的情况,误以为配置已经生效

数据来源与参考

  • Docker 官方 CLI 参考:docker run --blkio-weight(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌