资讯专栏INFORMATION COLUMN

Docker的镜像优化

IT那活儿 / 1443人阅读
Docker的镜像优化

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!





容器化背景



现今越来越多的企业将docker运用到自动化运维中,不管是为了保证开发、测试、生产环境的环境一致性,还是和CI/CD工具的集成度,例如jenkins对docker或k8s的自动构建部署。

因为容器具备如下优点:

  • 灵活性:即使是最复杂的应用程序也可以容器化。

  • 轻量化:容器共享主机内核,使得它们远比虚拟机高效。

  • 便携性:可以做到本地编译,到处运行。

  • 松耦合:容器自我封装,一个容器被替换或升级不会打断别的容器。

  • 安全性:容器对进程进行了严格的限制和隔离,而无需用户进行任何配置。





镜像源概述




1. 公共镜像

1.1 公共镜像的优点

联网直接pull并使用,简便。

1.2 公共镜像的缺点

1)dockerhub或国内镜像网站pull第三方镜像,但由于审核并非严格,所以存在一些安全漏洞;

2)增加了不必要的程序,冗余度差。

示例:优化镜像后的大小为原先未优化的大小的5倍,大大节省空间。

--Dockerhub上的最热门的镜像:

--没有进行优化的镜像,大小为629M:

--优化后的镜像,大小为126M:

2. 私有镜像

2.1 私有镜像的优点

每个企业或个人使用容器,都是应对不同的业务场景,没有完全一致的业务场景,自己制作的镜像最能满足自己的要求,节省资源成本,安全性高。

2.2 私有镜像的缺点

制作流程复杂,可重用性低,按需定制。





合格镜像的特点




1. 选择合适的基础镜像

选择Alpine镜像代替Ubuntu、CentOS、Debian等镜像从图中对比可看出centos的大小远大于Alpine,那么我们在选择基础镜像时选用Alpine时就会减少相应的体积。

2. 镜像文件层级尽量少

每执行一条Dockerfile中的指令,就会提交一次修改,这次修改会保存成一个只读层挂载到联合文件系统所以在编写Dockerfile时,我们可以根据实际情况去合并一些指令,比如我们在安装jdk,tomcat时,解压、编译、安装以及删除源文件的指令可以放在一起,以减少最终的镜像层,也可以通过压缩来减少层级但不一定好用。

3. 去除不必要的输出

在dockerfile构造镜像的时候总会有一些日志文件或者缓存的输出(tomcat的webapps挂载到主机不占用镜像的容量),将这些文件挂载或者直接删除。

4. 复用镜像层

在镜像的构建过程中,Docker根据Dockerfile指定的顺序执行每个指令。在执行每条指令之前,Docker都会在缓存中查找是否已经存在可重用的镜像,如果有就使用现存的镜像,不再重复创建,而镜像层多可重用的机会就越多,整体镜像部署时也不用上传全部镜像。





优化镜像的示例




1. 选取alpine作为操作系统基础镜像

2. 制作jre8环境镜像

--创建容器查看是否成功运行。

3. 直接应用jre8私有镜像并构建tomcat镜像

--调用jre8的镜像作为基础镜像拷贝tomcat源码包并编写环境变量。

--构建成功。

4. 启动镜像并验证

--运行tomcat_v2 映射端口为8999:

--登录查看到网页,成功制作镜像并运行:





本文作者:鲁 俊

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129574.html

相关文章

  • Node.js docker 镜像体积优化实践

    摘要:接下来我们将逐步的减少这个镜像的体积。优化生产环境镜像使用镜像大幅减小镜像体积的最简单和最快的方法是选择一个小得多的基本镜像。使用多阶段构建可以充分利用镜像的缓存,大大减少最终部署到生产环境的时间。 关注作者github每日一道面试题详解 你讨厌部署你的应用程序花费很长时间吗? 对于单个容器来说,超过gb并不是最佳实践。每次部署新版本时都要处理数十亿字节,这对我们来说并不太合适。 本文...

    wenhai.he 评论0 收藏0
  • Docker 实践(九):生产环境优化

    摘要:系列文章第五篇中介绍了线上生产环境使用集群,这篇文章对原来的架构进行了优化,同时使用了最新的一些特性,记录一些流水账。配置文件鉴于上次搭建时配置文件管理混乱,这次做了统一规划为每个环境创建不同的配置文件,可以以环境名后缀。删除无用的容器。 系列文章第五篇中介绍了线上生产环境使用 Docker 集群,这篇文章对原来的架构进行了优化,同时使用了 Docker 最新的一些特性,记录一些流水账...

    AlienZHOU 评论0 收藏0
  • 如何优化Docker储存

    摘要:修改配置文件在的配置文件最后一行的末尾添加,添加完之后的配置为重启服务重启的命令如下。修改后的结果如下启动服务删除源文件以上就是储存的优化方案,希望对您能够有所帮助,更好的使用容器技术。 各位同学,大家在使用Docker的过程中,有没有想过,Docker在本地存储镜像时把文件存储在哪里了呢?有没有对文件的总大小做一定的限制呢?能不能调整本地存储的位置及总限制大小呢?今天,我们就从这些问...

    Amio 评论0 收藏0
  • Windows Containers 大冒险: 优化计划(Dockerfile)

    摘要:最终叠加在一起成为新的镜像。优化的方法就是使用和换行符将多条语句合并成一条执行。第一点,所有指令在中需要大写,从而和具体的操作命令区分开来。第二点,对于过长的指令请合理使用换行符,从而增加的可阅读性。 前言 有一定旅行经验的朋友都知道,即使在出发前制定了详细的出行计划,也会在路途中因为各式各样的状况而不得不重新修改计划。这个状况在我们编写Dockerfile时一样存在。花了30分钟编写...

    Enlightenment 评论0 收藏0
  • 前端性能优化与上线

    摘要:看下状态可以看到我已经有一些镜像了我已经删除了拉镜像正常即可,中间那段是中国镜像源,我们成功下来了的镜像。攻破像我这样屌丝的服务器一般都买的,大的资源文件不住,一个动辄的文件这很蛋疼,不上很难受。 4000字长文,多图预警!!!流量慎入!! 性能优化 - 屌丝前端性能优化、上线一条龙 大家好我又来了,本章给大家带来的内容是:上线和上线后的性能优化 项目地址 实战预览地址 实战项目地址...

    wupengyu 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<