我想知道是否有办法限制或限制最大内存和主机级别上docker容器使用的处理能力。我的印象是内存选项只在容器启动时添加提供的内存,但不会永久限制它。
因为我使用带有dotnet应用程序(托管dll)的容器,单声道/葡萄酒和exes,java apps& amp; linux deamons,如果我能确保继续java内存分配不会使其他容器崩溃,那将是很好的。我现在正在为这些容器使用java内存选项(xms,xmx),并且与其他容器类似。我缺乏基于docker的系统来管理和监控cpu&记忆。 此外,存储器的百分比缩放& cpu是有用的,允许一个容器获得大量的处理能力和高峰时刻的记忆。我可以在主机进程级别上监视它,而不是在docker级别上。
我甚至没有谈论多主机设置(swarm,rancher,kubernetes)。 或者我的问题是否一般?
答案 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'