微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker-compose 规范表示不推荐使用 cpus 选项,但 docker run 表示使用 --cpus CPU

如何解决docker-compose 规范表示不推荐使用 cpus 选项,但 docker run 表示使用 --cpus CPU

阅读 docker-compose 规范 (https://github.com/compose-spec/compose-spec/blob/master/spec.md#cpus) 它说 cpus 选项已弃用,所以即使我使用它时它仍然有效,我认为这不是一个好主意。

cpu

已弃用:使用 deploy.reservations.cpus

cpus 定义分配给服务容器的(可能是虚拟的)cpu数量。这是一个小数。 0.000 表示没有限制。

另一方面,docker run 文档说 (https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler) --cpus 选项更方便。

指定 cpu CFS 调度器周期,与 --cpu-quota 一起使用。认为 100000 微秒(100 毫秒)。大多数用户不会更改认设置。 对于大多数用例,--cpus 是一种更方便的选择

所以我很困惑:我应该还是不应该在 docker-compose 中使用 cpus?如果没有,我如何有效地控制服务 cpu 使用率?

我使用 docker 而没有 swarm。

背景

$ docker version
Client:
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.8
 Git commit:        20.10.2-0ubuntu1~20.04.2
 Built:             Tue Mar 30 21:24:57 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.8
  Git commit:       20.10.2-0ubuntu1~20.04.2
  Built:            Mon Mar 29 19:10:09 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu2.3
  GitCommit:        
 runc:
  Version:          spec: 1.0.2-dev
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        
$ docker-compose version
docker-compose version 1.29.2,build 5becea4c
docker-py version: 5.0.0
cpython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

解决方法

您应该按照警告的建议使用 deploy.reservations.cpus,例如: https://github.com/compose-spec/compose-spec/blob/master/deploy.md#cpus

services:
  frontend:
    image: awesome/webapp
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

所以这意味着 cpus 应该处于保留状态,处于部署状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?