热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker镜像优化小手段

2019独角兽企业重金招聘Python工程师标准前言在docker已经成为标配的时代,镜像的优化建议大家都耳熟能详,如指令串联减少layer的层&

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前言

在docker已经成为标配的时代,镜像的优化建议大家都耳熟能详,如指令串联减少layer的层,使用更小的基础镜像等等。而在实际使用过程中,生成出来的镜像从100MB到1GB大小都有,大家都觉得已经按照建议优化了,已经尽力了。最开始的时候,还坚持对一些较大的镜像一起来找茬,看看能做哪些优化。随着项目的增多,只以镜像大小论英雄的方式了,实在java哭nodejs笑(只是我们的镜像一般都是java项目较大,nodejs较小,不代表具体意义)。最终只能是随机选择镜像审查(其实目的就是给大家压力,不要随便搞),对于镜像要求不能超过上限1GB(正如挤挤还是有的,镜像减减还是小的),除非另外申请。

在我们一段时间的镜像审查中,发现一个普遍的现象,镜像越小的反而空间浪费率越高(无用的文件、重复覆盖的文件或者被删除的文件等)。因为对于小镜像,增加了20MB,30MB,也就是从100MB级别增长到200MB级别,大家真的没有太在意,在刀耕火种无自动化工具支持的情况下,只能且行且将就~

人生总有亮光,程序员总不会单身一辈子的,dive的出现终于给我们较可行的镜像评分方案。

dive

dive是一个可以查看docker镜像的工具,可以获取镜像的分层,分层的文件信息(增删改),重复出现或删除的文件(无用空间的浪费)等。

镜像概况

Total Image size: 总的镜像大小

Potential wasted space: 可能的浪费空间(根据文件覆盖、删除等计算得到)

Image efficiency score: 根据各层中浪费的空间大小估算的镜像得分

根据镜像的概况,我们将得分少于0.9(最大为1)的镜像标记为可优化镜像,并将浪费空间对应的相应文件展示,如上图中所示的文件列表以及出现次数。

分层概况

上面图片展示了dive针对镜像的分层情况分析,基于这些数据我们主要分析以下几点:

  • 对于基础镜像(最底层)大于500MB的,建议选择更小的基础镜像,如基于alpine的镜像。
  • 对于分层大于10层的镜像,获取各层的命令汇总展示,建议调整指令,是否已使用串连的形式。
  • 除基础镜像外的所有层总大小如果大于500MB的,汇总各层新增、修改文件(对大于1MB的文件重点标),建议分析每层添加的文件是否有无用文件(因为镜像中的文件是否有用到只能由开发人员确认)。
  • 汇总各层的无用文件(我们定义为.pdf .txt .doc等一些文档文件不应该出现在镜像中),如果超过100MB的也建议优化

总结

dive提供了对docker镜像的层的文件信息,通过这些文件信息,我们可以更精准的对镜像提出合理的优化建议,不再是两眼摸黑乱指定。使用了上面的分析方式整改之后,现有的镜像优化了30%左右。

想了解更多dive的相关使用可以至github dive上浏览,至于不想安装dive只想试验的可以尝试我业余时间开发的网页版https://diving.aslant.site/。大家在使用网页版的时候,可以尝试输入redis(镜像需要先下载,如果其它未下载镜像会很慢很慢,因为大家都懂的墙)或者使用国内的镜像源如registry.docker-cn.com/library/redis。还有大家在使用网页版的时候,请手下留情,不要尝试太大的镜像,因为我的最低配的服务器,小胳膊小脚,不耐操。


转:https://my.oschina.net/vicanso/blog/3011232



推荐阅读
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • python是一门简单灵动的语言。从今天开始我要每天都做笔记,每天都要写博客记录我所想,我所学到的。笔记提纲:1,pyt ... [详细]
author-avatar
捕风的默小墨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有