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

Tim*_*bet 2 memory cpu docker

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

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

我什至还没有谈论多主机设置(swarm、rancher、kubernetes)。或者我的问题是一般?

BMi*_*tch 7

docker run 命令包括限制内存和 cpu的选项,特别是-c-m选项。

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

version: '3'
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M
Run Code Online (Sandbox Code Playgroud)

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

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

    cpus: '0.50'
    mem_limit: '50M'
Run Code Online (Sandbox Code Playgroud)

  • @Darwin 限制在每个容器上。因此,乘以副本数来估计您的集群需求。 (2认同)