docker内存限制
默认docker容器可以使用宿主机所有的内存和CPU,我们可以通过 docker run 来限制内存和CPU的使用。
有的系统内核不支持 Linux capabilities. 可以通过 docker info 命令来检查,如果系统内核不支持,会有如下报错
WARNING: No swap limit support
在linux主机上,如果kernel发现没有足够的内存了,会报出OOME或者Out Of Memory Exception,并且会kill 进程来释放内存,任何的进程都有可能会被kill,包括docker,这可能引起整个系统的宕机。
docker尝试通过调整docker守护进程的OOM优先级来减轻风险,以便它比系统上的其他进程更不可能被杀死。
| 选项 | 描述 |
-m or --memory= |
容器可使用最大内存,最小内存为4m,单位可以为 b,k,m,g |
--memory-swap* |
容器可用于交换到硬盘的最大内存 |
| --memory-swappiness | 默认情况下,容器的内核可以交换出一定比例的匿名页,设置为从 0 到 100,0表示关闭 |
| --memory-reservation | 内存预留 |
| --kernel-memory | 核心内存限制。最小为 4M |
| --oom-kill-disable | 是否阻止 OOM killer 杀死容器,默认没设置 |
--memory-swap 介绍
只有当--memory设置之后,--memory-swap 才会生效
1、如果--memory-swap设置为正整数,那么这两个--memory和 --memory-swap必须设置。--memory-swap表示可以使用的内存和交换总量,并--memory控制非交换内存使用的数量。因此,如果--memory="300m"和--memory-swap="1g",容器可以使用300m的内存和700m(1g - 300m)交换。
2、如果--memory-swap设置为0,则忽略该设置,并将该值视为未设置。
3、如果--memory-swap设置为与值相同的值--memory,并且--memory设置为正整数,则不使用swap。
4、如果--memory-swap未设置并且--memory已--memory设置,则如果主机容器配置了交换内存,则容器可以使用两倍于设置的交换。例如,如果--memory="300m"和--memory-swap未设置,容器可以使用300m的内存和600m的交换。
5、如果--memory-swap明确设置为-1,则允许容器使用无限制交换,最多可达主机系统上可用的数量。
防止容器使用交换
如果--memory和--memory-swap设置为相同的值,则可以防止容器使用任何交换。这是因为--memory-swap可以使用的组合内存和交换量,而--memory只是可以使用的物理内存量。
--memory-swappiness 细节
- 值为0将关闭匿名页面交换。
- 值100将所有匿名页面设置为可交换。
- 默认情况下,如果未设置
--memory-swappiness,则值将从主机继承。
--kernel-memory 细节
内核内存限制以分配给容器的总内存表示。请考虑以下方案:
- 无限内存,无限内核内存:这是默认行为。
- 无限内存,有限内核内存:当所有cgroup所需的内存量大于主机上实际存在的内存量时,这是合适的。您可以将内核内存配置为永远不会覆盖主机上可用的内容,而需要更多内存的容器需要等待它。
- 有限的内存,无限的内核内存:整体内存有限,但内核内存不受限制。
- 有限的内存,有限的内核内存:限制用户和内核内存对于调试与内存相关的问题非常有用。如果容器正在使用意外数量的任一类型的内存,则它会耗尽内存而不会影响其他容器或主机。在此设置中,如果内核内存限制低于用户内存限制,则内核内存不足会导致容器遇到OOM错误。如果内核内存限制高于用户内存限制,则内核限制不会导致容器遇到OOM。
当您打开任何内核内存限制时,主机会根据每个进程跟踪“高水位线”统计信息,因此您可以跟踪哪些进程(在本例中为容器)正在使用多余的内存。通过/proc/<PID>/status在主机上查看,可以在每个过程中看到这一点。
docker内存限制的更多相关文章
- docker内存监控与压测
一直运行的docker容器显示内存已经耗尽,并且容器内存耗尽也没出现重启情况,通过后台查看发现进程没有占用多少内存.内存的监控使用的是cadvisor,计算方式也是使用cadvisor的页面计算方式, ...
- docker内存和cpu调试
本地启动了一个sshd的容器服务,但该容器经常会被重启导致ssh连接失败,使用kubectl describe pod命令查看改命令发现有容器返回值为137,一般是系统环境原因,且一般为内存不足导致的 ...
- Docker 容器内存限制 - 八
Docker 内存限制: centos /bin/bash 查看容器实例 内存限制: 限制容器内存大小:docker run -d -i -t -m 256M --memory-swap 512M ...
- docker高级应用之cpu与内存资源限制(转)
时间:2015-06-09 14:01:52 阅读:1581 评论:0 收藏:0 [点我收藏+] 标签:docker资源限制 docker cpu限制 ...
- [转帖]Docker容器CPU、memory资源限制
Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...
- Docker(二十)-Docker容器CPU、memory资源限制
背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...
- 003.Docker容器管理
一 docer运行应用 1.1 常见容器运行 root@docker:~# docker #查看docker相关命令 root@docker:~# docker run -d -p 80:80 htt ...
- docker 知识点汇总
目录 什么是 Docker Docker 简介 Docker 的特点 如何使用 Docker 镜像的常用操作 容器的常用操作 Docker 命令汇总 手工制作 java 镜像 使用 Dockerfil ...
- 关于ubuntu 16.04 docker常用命令
1.sudo docker ps -a 查看当前docker实例的信息: CONTAINER ID IMAGE COMMAND ...
随机推荐
- 【LeetCode】385. Mini Parser 解题报告(Python)
[LeetCode]385. Mini Parser 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/mini-parser/ ...
- 过河(状态压缩,dp)
描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上 ...
- Kronecker Products and Stack Operator
目录 定义 Stack Operator Kronecker Product 性质 Stack Operator Kronecker Product 半线性 Whitcomb L. Notes on ...
- <学习opencv>opencv函数
/*=========================================================================*/ // openCV中的函数 /*====== ...
- 微信支付 V3 RSA 加签踩坑
最近在做微信支付,根据微信官方文档上的要求 用RSA加签去请求支付窗口的调起,下面详细列举支付开发过程: 当前项目的流程大概是,前端根据后端要求提交数据------->拿到后台返回的prepay ...
- 目录-Bug集锦
<Bug集锦>主要是收集一些较有回顾意义的Bug以及Bug的处理思路,方便大家互相学习. 目录 BUG-Nuget包版本不一致导致程序行为与预期不符
- SpringBoot集成jasperreport实现打印功能
1.jaspersoft studio工具下载地址 下载直通车 2.工具使用方法查看以下链接 工具使用 3.将工具编译后的.jasper文件放到SpringBoot项目的resources/templ ...
- 关于java的Excel导入导出之easypoi
导入easypoi相关jar包,这里的easypoi-base的包也可以不倒入,因为easypoi-web中有依赖easypoi-base会自动导入的 <!-- https://mvnrepos ...
- Linux7系统开通防火墙端口
一.查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop fi ...
- 微信小程序配置域名的时候提示“校验文件验证失败”
在微信小程序后台配置web-view的业务域名跟扫普通链接二维码打开小程序两项功能时, 一直提示"校验文件验证失败,请下载校验文件,上传到服务器指定的目录" 实际访问校验文件的路径 ...