当前位置: 首页 > news >正文

Docker指定容器使用内存

Docker指定容器使用内存

作者:铁乐与猫

如果是还没有生成的容器,你可以从指定镜像生成容器时特意加上 run -m 256m 或 --memory-swap=512m来限制。

-m操作指定的是物理内存,还有虚拟交换分区默认也会生成同样的大小,而–memory-swap的值则等于两者的总和大小。

如果是已在运行中的容器,可以通过docker update命令来实现:
在这里插入图片描述
docker update --help可查看到用法,如上图所见。

-m --memory 为设置内存最大值;默认单位为byte,可以使用K、G、M等带单位的字符串。

–memory-reservation 是弹性控制内存大小,防止损失性能,建议要开。当宿主机资源充足时,允许容器尽量多地使用内存,当检测到内存竞争或者低内存时,强制将容器的内存降低到memory-reservation所指定的内存大小。按照官方说法,不设置此选项时,有可能出现某些容器长时间占用大量内存,导致性能上的损失。

–-memory-swap:等于内存和swap分区大小的总和,设置为-1时,表示swap分区的大小是无限的。默认单位为byte,可以使用K、G、M等带单位的字符串。如果–memory-swap的设置值小于–-memory的值,则使用默认值,为–-memory-swap值的两倍。

默认情况下,容器可以使用主机上的所有空闲内存。

docker会自动为容器在目录/sys/fs/cgroup/memory/docker/<容器的完整长ID>中创建相应cgroup配置文件,所以在宿主机内查看容器使用的内存配额可以通过查看相应的配置文件得知:
在这里插入图片描述
好比如上图

在cgroups的配置文件中,查看到容器的内存大小为256MB (256×1024×1024=268435456B),内存和swap加起来大小为512MB(512x1024x1024=536870912)。

注:我实际查看线上的容器时没有限制内存和swap的大小,后来自行敲了docker update --memory-swap=512 容器ID 的命令重新再看才变成512MB了。

例:

core@tielemao /data/mysql_wp_db/mysql $ docker update -m 256m d17d6d17d6core@tielemao /data/mysql_wp_db/mysql $ docker update --memory-swap 512m d17d6d17d6core@tielemao /data/mysql_wp_db/mysql $ docker stats d17d6CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O             PIDSd17d6               0.04%               252.6 MiB / 256 MiB   98.65%              668.7 kB / 13.53 MB   43.38 MB / 14.91 MB   30

docker stats 容器ID 可查看容器实际使用中的资源配额,以上例子中的容器是做mysql用的,可见挺耗内存的。而wordpress博客的容器使用中的内存才122MB左右。256M也足够了。

现在怀疑之前容器隔一周两周就自动退出也是因为没做限制倒致宿主机oom将其kill。

目前free -h观测宿主机没有不停增长使用的内存了,估计就是这个原因所致。如果真是这个原因,那至少还能将CoreOS和docker继续用下去,wordpress博客用途。

http://www.lryc.cn/news/222973.html

相关文章:

  • 做什么数据表格啊,要做就做数据可视化
  • CSS特效003:太阳、地球、月球的旋转
  • 云计算的大模型之争,亚马逊云科技落后了?
  • 【form校验】3.0项目多层list嵌套
  • 公共功能测试用例
  • 【电路笔记】-并联RLC电路分析
  • ros1 client
  • 射频功率放大器应用中GaN HEMT的表面电势模型
  • CSP(Common Spatial Patterns)——EEG特征提取方法详解
  • 【Git】Git 学习笔记_操作本地仓库
  • 杂记(3):在Pytorch中如何操作将数据集分为训练集和测试集?
  • 【MySQL篇】数据库角色
  • c++ 信奥赛编程 2050:【例5.20】字串包含
  • 用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
  • Paste v4.1.2(Mac剪切板)
  • 事件绑定-回调函数
  • Makefile 总述
  • 写给新用户-Mac软件指南篇:让你的Mac更好用
  • 03运算符综合
  • LeetCode刷题--思路总结记录
  • Nodejs
  • 【面经】spring,springboot,springcloud有什么区别和联系
  • SpringBoot Kafka消费者 多kafka配置
  • git 标签相关命令
  • 我在Vscode学OpenCV 图像运算(权重、逻辑运算、掩码、位分解、数字水印)
  • 【 Docker: 数据卷挂载】
  • windows上的静态链接和动态链接的区别与作用(笔记)
  • MySQL和Postgresql数据库备份和恢复
  • 使用MCU上的I2C总线进行传感器应用
  • 汽车标定技术(七)--基于模型开发如何生成完整的A2L文件(2)