我可以限制记忆和每个docker容器使用的cpu?

时间:2018-05-18 09:22:27

标签: docker memory cpu

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

因为我使用带有dotnet应用程序(托管dll)的容器,单声道/葡萄酒和exes,java apps& amp; linux deamons,如果我能确保继续java内存分配不会使其他容器崩溃,那将是很好的。我现在正在为这些容器使用java内存选项(xms,xmx),并且与其他容器类似。我缺乏基于docker的系统来管理和监控cpu&记忆。 此外,存储器的百分比缩放& cpu是有用的,允许一个容器获得大量的处理能力和高峰时刻的记忆。我可以在主机进程级别上监视它,而不是在docker级别上。

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

1 个答案:

答案 0 :(得分:0)

docker run命令包含options to limit memory and cpu,特别是-c-m选项。

使用compose文件和swarm模式(可以是单节点swarm集群),这些模块配置为resources section per service

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

对于docker-compose支持,您可以使用version 2 syntax获得类似的结果:

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

    cpus: '0.50'
    mem_limit: '50M'