【问题标题】:docker-compose not honoring CPU limitsdocker-compose 不遵守 CPU 限制
【发布时间】:2022-01-24 12:28:52
【问题描述】:

我对 docker 很陌生,我正在尝试运行一些 minecraft 容器,但是它们似乎没有遵守我设置的 CPU 限制。正如您在注释掉的部分中看到的那样,我也尝试过使用 v3。无论我设置什么限制,容器都会在 docker stats 中显示高达 400% 的 cpu 使用率。它是一个由 Oracle 托管的 4cpu 虚拟机,运行 Ubuntu。

还有其他方法可以强制执行此限制吗?

---
version: "2.4"
#version: "3.9"
services:
  mc-cl:
    container_name: mc-crimson
    image: itzg/minecraft-server:java11
    ports:
      - 25566:25565
    volumes:
      - ./data:/data
    environment:
      - TYPE=PAPER
      - VERSION=1.15.2
      - EULA=TRUE
      - MEMORY=1536M
      - GID=1001
      - UID=1001
      - USE_AIKAR_FLAGS=true
    cpus: 1
    mem_limit: 3072M
    mem_reservation: 3072M
#    deploy:
#      resources:
#        limits:
#          cpus: '1'
#          memory: 3072M
#        reservations:
#          cpus: '0.5'
#          memory: 3072M
    restart: unless-stopped

如果有帮助,这是我的 docker 版本和 docker compose 版本。

客户:Docker 引擎 - 社区

版本:20.10.12
API 版本:1.41
Go 版本:go1.16.12
Git 提交:e91ed57
建成:2021 年 12 月 13 日星期一 11:44:28
操作系统/架构:linux/arm64
上下文:默认
实验:是的

服务器:Docker 引擎 - 社区

引擎:
版本:20.10.12
API 版本:1.41(最低版本 1.12)
Go 版本:go1.16.12
Git 提交:459d0df
建成:2021 年 12 月 13 日星期一 11:43:05
操作系统/架构:linux/arm64
实验性:错误
容器化:
版本:1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
运行:
版本:1.0.2
GitCommit:v1.0.2-0-g52b36a2
码头工人初始化:
版本:0.19.0
GitCommit:de40ad0

Docker Compose 版本 v2.2.2

【问题讨论】:

  • 这应该对你有帮助:stackoverflow.com/a/57135933/11895568
  • 如果没记错的话--compatability up 将 v3 转换为 v2 对应版本。鉴于我已明确尝试使用 v2 格式进行此操作。我不确定这会奏效。编辑:无论如何我都尝试过,但没有效果。
  • 这是不正确的。该解决方案是为了避免使用 v2。确保你像他一样遵循每一步
  • "1.20.0 引入了一个新的 --compatibility 标志,旨在帮助开发人员更轻松地过渡到版本 3。启用后,docker-compose 会读取每个服务定义的部署部分并尝试将其转换为等效的版本 2 参数。” 对于 YAML 的部署部分,它执行我所说的。我还说我也在 V2 中使用 V2 标签编写了 compose 文件,但仍然没有遵守限制,允许 cpu 最高达到 400%。我不需要编写 v3 compose 文件,但尝试了它是否有所作为。

标签: docker docker-compose


【解决方案1】:

所以我设法解决了我自己的问题。我有一个想法,所以我通过删除 docker compose v2 (yaml v3) 来做到这一点

rm ~/.docker/cli-plugins/docker-compose

并从存储库中安装了 docker-compose v1.25.0

apt install docker-compose -y

现在在运行容器时会遵守限制。

【讨论】:

  • 顺便说一句,在 2022 年,使用 docker-compose 的 v1.29.2,您现在可以使用 yaml 3.9,并且 cpus:0.3 可以很好地将 cpu 限制为 30%,而无需 docker swarm 或 v2 .x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2018-03-17
  • 2023-03-24
  • 1970-01-01
  • 2021-01-08
  • 2021-02-03
  • 2022-10-18
相关资源
最近更新 更多