全部产品
容器服务

限制和预留容器资源

更新时间:2017-08-21 15:01:46   分享:   

Docker 容器的一大优势就是可以限制资源,包括 CPU、内存、IO 等,swarm mode 集群下可对应用进行资源限制和资源预留。

您可以在容器服务管理控制台上通过设置界面上的参数或者通过编写编排模板来限制和预留容器资源。

注意:swarm mode 集群支持 Compose V1/V2 和 Compose V3。其中,关于资源约束配置的语法, Compose V1/V2 和 Compse V3 不同。

通过设置界面上的参数

您可以在 使用镜像创建应用 或者 变更服务配置 时,设置 资源限制资源预留

在 swarm mode 集群下,cpu 以 1.0 代表 1 核,支持小数形式;内存的单位为 Byte。

界面上设置资源参数

通过编排模板

模板版本支持

Compose V1/V2 Compose V3
mem_limit 标签
cpu_shares 标签
limits 标签设置资源限制。
reservations 标签设置资源预留。
参见 resources

compose V1/V2

一个 CPU 核等于 100 CPU 资源。如果机器配置是 4 核,则总共可用的 CPU 资源为 400。在编排模板中,可以通过 cpu_shares 参数指定。cpu_shares: 50表示使用 0.5 个核。

您可以使用 mem_limit 参数限制内存,单位为 Byte,最小内存为 4MB。如果设置了内存限制,当容器申请的内存超过限制时,容器会因为 OOM 而停止运行。

编排示例:

  1. n1:
  2. expose:
  3. - 443/tcp
  4. - 80/tcp
  5. image: 'nginx:latest'
  6. cpu_shares: 50 #0.5核
  7. mem_limit: 536870912 #512MB
  8. labels:
  9. aliyun.scale: '1'
  10. restart: always
  11. volumes:
  12. - /var/cache/nginx

资源调度

为了保证容器能获得足量的指定资源,比如上述例子里的 0.5 核 CPU 和 512MB 内存,容器服务会为容器预留资源。比如,一台 4 核的机器,最多会调度 8 个 cpu_shares=50 的容器。但是,如果创建容器时未指定 cpu_sharsmem_limit,则默认不占资源。

Compose V3

在 compose V3 编排模板中,可以通过 limits 标签指定资源限制;通过 reservations 标签设置资源预留。

编排示例:

  1. version: '3'
  2. n1:
  3. expose:
  4. - 443/tcp
  5. - 80/tcp
  6. image: 'nginx:latest'
  7. deploy:
  8. resources: #注意
  9. limits:
  10. cpus: '0.5'
  11. memory: 512M
  12. reservations:
  13. cpus: '0.3'
  14. memory: 300M
  15. restart: always
  16. volumes:
  17. - /var/cache/nginx

限制其他资源

其他资源限制请参考 Docker Compose 的说明

本文导读目录
本文导读目录
以上内容是否对您有帮助?