Docker容器资源配额限制防抢占,零基础配置教程

Docker容器资源配额限制防抢占,零基础配置教程

当服务器上运行多个容器时,一个容器可能耗尽CPU或内存,导致其他容器响应变慢甚至崩溃。
这种“资源抢占”问题可以通过Docker的资源配额机制轻松解决。
本文从零开始,教你如何为容器设定CPU、内存和磁盘IO的硬性上限,确保每个容器都能得到公平的资源分配。

操作前的准备工作

  • 已安装Docker(版本20.10+,推荐使用最新稳定版)。
  • 拥有宿主机root或docker组权限。
  • 建议提前用docker info确认你的操作系统支持cgroup相关功能,大多数Linux发行版默认支持。

CPU配额限制:防止一个容器占满所有核心

通过--cpus参数可以限制容器最多使用多少个CPU核心(支持小数,如1.5表示1.5个核心)。

命令示例:

docker run -d --name myapp --cpus=0.5 nginx:alpine

这表示该容器最多使用半个核心。
你还可以用--cpu-quota--cpu-period做更精细的控制,但--cpus更直观。

验证:在容器内执行stress --cpu 4模拟高负载,然后使用docker stats myapp查看CPU使用百分比,会发现它被限制在50%附近。

内存配额限制:避免容器耗尽宿主机内存

使用--memory(硬限制)和--memory-swap(总内存+交换分区上限)来控制内存使用。

命令示例:

docker run -d --name myapp --memory=256m --memory-swap=512m nginx:alpine

表示容器最多使用256MB物理内存,总内存+交换分区不超过512MB。
如果不设置--memory-swap,默认为--memory的两倍。

避坑提醒--memory-swap必须大于--memory,否则报错。
如果容器申请超过--memory且宿主机交换分区已满,容器会触发OOM被强制终止。

磁盘IO限制:防止大量读写拖慢其他服务

Docker通过--device-read-bps--device-write-bps限制特定设备的读写速率。

命令示例:

docker run -d --name myapp --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb nginx:alpine

表示对磁盘/dev/sda的读和写速率均限制为1MB/s。
如果不确定设备路径,用lsblk查看。

效果验证与常见问题

验证方法:运行一个测试容器,设置低配额,然后使用docker stats实时观察资源使用;
或使用stress工具模拟负载,检查是否被限速。

常见问题

  • 如何查看已运行容器的配额?→ 执行docker inspect 容器名 | grep -i -A5 "memory|cpu"
  • 能否动态修改配额?→ 可以,用docker update命令,例如docker update --cpus=1 myapp
  • 限制后容器启动失败怎么办?→ 检查--memory是否过小导致OOM,或--cpus设置过低导致进程被挂起,建议逐步调整。

完成以上配置后,你的多容器环境将不再彼此抢占资源,服务稳定性大幅提升。
如果在实践中遇到其他异常,优先回顾本节避坑点。

分享到:
上一篇
WordPress后台登录地址隐藏防扫描教程
下一篇
Linux防火墙放行443 80跨境端口
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意