1. 前言
为避免Docker容器打满磁盘IO,有时需要对容器进行磁盘IO限速。
参考文档:
- docker container run
- Services top-level elements - blkio_config
- Compose file version 2 reference - blkio_config
- 容器磁盘限速:我的容器里磁盘读写为什么不稳定?
2. 启动容器时限制容器磁盘IO
1 | docker run --name test -d \ |
上面的命令中,限制了容器读写 /dev/sda 的速度:
- 读速度最高40MBps
- 写速度最高 20MBps
- 磁盘IO权重500(多个容器竞争IO时的相对权重,取值10到1000)
注意1:device对应的宿主机的磁盘设备,例如 /dev/sda、/dev/sdb1
注意2:创建容器之后,无法通过 update 修改容器磁盘IO限制
注意3:宿主机内核版本在3.13以上才支持blkio cgroups;Docker存储驱动也需要支持blkio cgroups,比如overlay2
3. Compose限制容器磁盘IO
1 | version: '3.2' |
4. 查看容器磁盘IO限制
1 | docker inspect -f '{{.HostConfig.BlkioDeviceReadBps}}' <container id> |