如何在Docker Compose 2.4版本中指定容器CPU使用限制
Docker Compose 2.4版本CPU限制配置说明
首先明确:你熟悉的v3版本limits.cpus语法不适用于2.4版本,2.4版本需要使用v2格式专属的资源限制参数,直接写在service同级配置下即可。
2.4版本支持的CPU限制参数
cpus:直接限制容器可使用的CPU核心数,例如cpus: 0.5代表最多使用0.5个CPU核心,等效于v3版本的limits.cpus效果cpu_shares:CPU权重分配,默认值为1024,多个容器抢占CPU时,按权重比例分配资源cpuset:绑定容器到指定CPU核心运行,例如cpuset: "0,1"代表仅允许使用第0和第1个CPU核心cpu_period+cpu_quota:细粒度CPU时间片限制,cpu_period为调度周期(单位微秒,默认100000即100ms),cpu_quota为周期内容器可使用的CPU时间,例如cpu_period: 100000+cpu_quota: 50000等价于cpus: 0.5
修改后的配置示例
--- version: '2.4' services: kafka-exporter: mem_limit: "612m" cpus: "0.5" # 新增CPU限制,最多使用0.5核,可根据实际需求调整数值 image: kafka-exporter:v1.2.0 restart: always network_mode: host container_name: kafka-exporter command: ["--kafka.server=kafka01.sys65.com:6667"] ports: - 9308:9308 logging: driver: "json-file" options: max-size: "15m" max-file: "1"
配置验证方法
容器启动后可以执行以下命令确认限制生效:
- 执行
docker inspect kafka-exporter | grep Cpu,查看返回的CpuQuota等参数是否和配置一致 - 执行
docker stats kafka-exporter,观察CPU使用率最高不会超过你限制的核心数对应的百分比(例如限制0.5核的话最高为50%)
注意事项
设置CPU限制前建议先观察服务正常运行时的CPU占用基线,避免限制过低导致服务处理能力不足、指标采集延迟等问题。
内容的提问来源于stack exchange,提问作者jessica
相关产品推荐
相关产品推荐

