Docker笔记(9):容器的资源分配

本文介绍了Docker容器的资源分配,包括内存分配,通过-m和-memory-swap参数设定限额;CPU限制,使用-cpu-shares设置权重比例;以及Block IO限制,利用-blkio-weight调整读写优先级,并通过--device-read-bps和--device-write-bps控制bps和iops。这些配置基于Linux的cgroup系统实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.内存分配

内存限额与操作系统类似,容器可使用的内存包括两部分:物理内存和swap。Docker通过下面两组参数来控制容器内存的使用量。

(1)-m或-memory:设置内存的使用限额,例如100MB,2GB。

(2)-memory-swap:设置内存+swap的使用限额。

默认情况下对容器内存和swap的使用没有限制。如果在启动容器时只指定-m而不指定–memory-swap,那么–memory-swap默认为-m的两倍。

当我们执行如下命令:

docker run -m 200M --memory-swap=300M ubuntu --vm 1 --vm-bytes 280M

该命令允许容器最多使用200MB的内存和100MB的swap。vm 1表示容器启动1个内存工作线程

vm-bves280M表示每个线程分配280MB内存。

2.CPU限制

CPU限额默认设置下,所有容器可以平等地使用主机的CPU资源并且没有限制。Docker可以通过-c或–cpu-shares设置容器使用CPU的权重。如果不指定,默认值为1024。与内存限额不同,通过-c设置的 cpu share并不是CPU资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的CPU资源取决于它的 cpu share占所有容器 cpu share总和的比例。换句话说:通过-c可以设置容器使用CPU的优先级。

如果容器A的cpu share值是容器B的两倍,当两个容器都需要CPU资源时,容器A获得的CPU是容器B的两倍。需要特别注意的是,这种按权重分配CPU只会发生在CPU资源紧张的情况下。如果CPU存在空闲,这时为了充分利用CPU资源,容器可以分配到全部可用的CPU。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值