我可以限制每个 docker 容器使用的内存和 CPU 吗?

问题描述 投票:0回答:1

我想知道是否有一种方法可以限制或限制 docker 容器在主机级别使用的最大内存和处理能力。我的印象是内存选项仅在容器启动时添加提供的内存,但不会永久限制它。

当我使用带有 dotnet 应用程序(托管 dll)、mono'd/wine'd exes、java 应用程序和 linux deamons 的容器时,如果我能够确保继续 java 内存分配不会造成其他问题,那就太好了容器崩溃。我现在正在为这些容器使用 java 内存选项(xms、xmx),并且所做的操作与其他容器类似。我缺少一个基于 docker 的系统来管理和监控 cpu 和内存。 此外,内存和 CPU 的百分位数缩放也很有用,它允许一个容器在高峰时刻获取大量处理能力和内存。我可以在主机进程级别监视它,而不是在 Docker 级别。

我什至还没有谈论多主机设置(swarm、rancher、kubernetes)。 还是我的问题太笼统了?

docker memory cpu
1个回答
7
投票

docker run 命令包括 限制内存和 CPU 的选项,特别是

-c
-m
选项。

使用 compose 文件和 swarm 模式(可以是单节点 swarm 集群),这些配置了每个服务的 resources 部分

version: '3'
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

对于 docker-compose 支持,您可以使用 版本 2 语法 获得类似的结果:

version: '2.2'
services:
 test:
    image: busybox:latest
    command: tail -f /dev/null

    cpus: '0.50'
    mem_limit: '50M'
© www.soinside.com 2019 - 2024. All rights reserved.