当前位置: 首页 > 编程笔记 >

Docker 限制容器的 Block IO使用

牛昱
2023-03-14
本文向大家介绍Docker 限制容器的 Block IO使用,包括了Docker 限制容器的 Block IO使用的使用技巧和注意事项,需要的朋友参考一下

前面学习了如何限制容器对内存和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

我们来看看实验结果:

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我是Docker的新手,所以很可能我缺少一些东西。 我正在使用Elasticsearch使用此图像运行容器。 我能够正确设置所有内容。之后,我使用的是一个由同事开发的脚本,用于插入一些数据,基本上是查询MySQL数据库并发出HTTP请求。 问题是,这些请求中的许多请求都会卡住,直到失败。如果我知道了: 有很多要求。在这一点上,我不确定这是否与elasticsearch或泊坞窗有关。如果

  • 问题内容: 带有 Windows的Docker桌面的Docker Windows容器是否具有默认内存限制?我有一个在容器中运行时崩溃的应用程序,但是当我尝试为命令指定参数时,它似乎运行良好。至少在以前崩溃的情况下。这给我的印象是有默认的内存限制,但是我在文档中找不到它。所以我的问题是是否存在内存限制,并且是否在记录的地方? 问题答案: 根据关于Windows的Docker Github问题的讨论(

  • 我的情况是限制负载均衡器网络中容器的internet访问。例如,在下面的图片中 只有容器4连接到Internet;其他三个只通过容器4与外界通信。例如,如果容器1需要smtp支持,它会将smtp请求转发给容器4以获得访问权限。 除container4外,任何容器都不允许直接访问互联网!这应该在Docker级别强制执行。 我相信它将在docker network creation上进行配置,有人能解

  • 我在一个物理服务器中有一个VM主机,里面有许多docker容器。 这是我fig.yml的一部分 我希望设置pg容器只使用主机cpu的25%,应用程序只使用主机cpu的50%,以此类推。 我可以用或手动管理链接吗? 在我的例子中,当这个容器中的一个正在运行一个昂贵的任务时,它会影响其他容器的cpu性能。但是,当在同一台物理服务器中,我有其他具有类似部署的VM时,问题会急剧增加。

  • 本文向大家介绍Docker 限制容器可用的CPU的方式,包括了Docker 限制容器可用的CPU的方式的使用技巧和注意事项,需要的朋友参考一下 默认情况下容器可以使用的主机 CPU 资源是不受限制的。和内存资源的使用一样,如果不对容器可以使用的 CPU 资源进行限制,一旦发生容器内程序异常使用 CPU 的情况,很可能把整个主机的 CPU 资源耗尽,从而导致更大的灾难。本文将介绍如何限制容器可以使用

  • 问题内容: 我正在Ubuntu 13.04(Raring Ringtail)之上运行最新版本的Docker: 但是当我启动容器时 我没有看到任何限制,并且我的内核启用了cgroups内存限制: 我在这里想念什么明显的东西? 问题答案: 将不会显示它,因为这是通过cgroups强制执行的。而是可以在主机(容器外部)上使用和cgroup内存进行检查: 要查看它的内存不足,可以运行一些将使用比分配的内存