限制容器的 Block IO - 每天5分钟玩转 Docker 容器技术(29)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 前面学习了如何限制容器对内存和CPU的使用,本节我们来看 Block IO。Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。

前面学习了如何限制容器对内存和CPU的使用,本节我们来看 Block IO。

Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。

注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。

block IO 权重

默认情况下,所有容器能平等地读写磁盘,可以通过设置 --blkio-weight 参数来改变容器 block IO 的优先级。

--blkio-weight 与 --cpu-shares 类似,设置的是相对权重值,默认为 500。在下面的例子中,container_A 读写磁盘的带宽是 container_B 的两倍。

docker run -it --name container_A --blkio-weight 600 ubuntu   

docker run -it --name container_B --blkio-weight 300 ubuntu

限制 bps 和 iops

bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数。

可通过以下参数控制容器的 bps 和 iops:
--device-read-bps,限制读某个设备的 bps。
--device-write-bps,限制写某个设备的 bps。
--device-read-iops,限制读某个设备的 iops。
--device-write-iops,限制写某个设备的 iops。

下面这个例子限制容器写 /dev/sda 的速率为 30 MB/s

docker run -it --device-write-bps /dev/sda:30MB ubuntu

我们来看看实验结果:

136.png

通过 dd 测试在容器中写磁盘的速度。因为容器的文件系统是在 host /dev/sda 上的,在容器中写文件相当于对 host /dev/sda 进行写操作。另外,oflag=direct 指定用 direct IO 方式写文件,这样 --device-write-bps 才能生效。

结果表明,bps 25.6 MB/s 没有超过 30 MB/s 的限速。

作为对比测试,如果不限速,结果如下:

137.png

其他参数的使用方法类似,留给大家自己练习。

下一节我们讨论实现容器的底层技术。 

二维码+指纹.png

目录
相关文章
|
Kubernetes Linux Docker
Docker容器生产实践1——永远设置容器内存限制
背景 在默认情况下,docker容器并不会对容器内部进程使用的内存大小进行任何限制。对于PaaS系统而言,或者对于直接使用docker的用户而言,这非常危险。
3317 0
|
2月前
|
存储 关系型数据库 MySQL
|
7月前
|
运维 数据可视化 数据安全/隐私保护
Portainer.io:让容器管理变得更加直观
在现代软件开发和部署中,容器化技术已经变得越来越流行。Docker 是其中一种领先的容器化平台,而 Portainer.io 则是一个优秀的管理工具,使得 Docker 的使用变得更加简单和可视化。本文将介绍 Portainer.io 的基本功能和如何在 Docker 上安装和配置。
310 1
 Portainer.io:让容器管理变得更加直观
|
7月前
|
网络协议 应用服务中间件 nginx
一文详解Docker容器(Container)
一文详解Docker容器(Container)
|
Shell Linux Docker
docker容器数据卷介绍、使用、数据容器卷volumes-from的使用
命名的容器挂载数据卷,其他容器通过挂载这个父容器来实现数据共享,挂载数据卷的容器称为数据卷容器,以下二、三主要讲与宿主机挂载容器数据卷。四讲其他容器通过volumes-from来挂载父容器来实现数据共享。 >通俗点容器数据卷是将docker中的容器(container)中产生的数据持久化到宿主机文件中并实现数据共享,其他容器可以通过数据卷来链接到这个容器,实现数据共享。
521 0
|
监控 Cloud Native 安全
使用GUI工具Portainer.io管控Docker容器
5年前容器技术扑面而来,如今已经成为面向云原生开发的基础架构,基于微服务的设计需要部署大量容器,同时强调了友好快速的管理容器。
使用GUI工具Portainer.io管控Docker容器
|
存储 Docker 容器
Docker Container容器镜像技术详解(中)
Docker Container容器镜像技术详解
132 0
Docker Container容器镜像技术详解(中)
|
Ubuntu Linux API
Docker Container容器镜像技术详解(上)
Docker Container容器镜像技术详解
327 0
Docker Container容器镜像技术详解(上)
|
安全 Linux 开发工具
Docker Container容器镜像技术详解(下)
Docker Container容器镜像技术详解
222 0
Docker Container容器镜像技术详解(下)