《基于Kubernetes的容器云平台实战》——3.3 Dockerfile优化

举报
华章计算机 发表于 2019/06/02 01:10:20 2019/06/02
【摘要】 本书摘自《基于Kubernetes的容器云平台实战》——书中的第3章,第3.3.1节作者是陆平、左奇、付光、张晗、赵培、单良

3.3 Dockerfile优化

虽然Dockerfile文件的编写语法比较简单,但是如何写出一个高质量的Dockerfile也不是一件容易的事情,本节主要介绍编写一个好的Dockerfile要遵循的规范、检查项目、实例及优化工具。

3.3.1 Dockerfile检查项

如何判断一个Dockerfile是最优的,一般要考虑如下因素:

Dockerfile文件通俗易懂,可读性好。Dockerfile文件不宜过长,如果过长需要考虑分成多个Dockerfile。

构建过程执行速度快,对执行环境要求低。

构建出的镜像文件小,不含冗余的内容。

构建出的Docker镜像包含的分层尽可能少。

为了编写出最优的Dockerfile,需要根据下面的checklist进行检查,不符合要求的需要改正。

1)Dockerignore文件。检查是否有.dockerignore文件,以及该文件中是否过滤掉了不用的文件。

2)容器进程数量。一般情况下一个容器只执行一个进程,如果有极其特殊原因需要使用多个进程,则需要考虑多个进程间是否互相影响,可以考虑使用supervisor进行多进程管理。

3)Dockerfile指令。

使用workdir设定当前工作目录。

run指令。多个顺序执行的run指令需要合并,以减少镜像的层次及提高Dockerfile的可读性;run指令执行完后需要删除冗余的文件,确保制作出的镜像文件简洁。

合理调整copy与run的顺序。我们应该把变化最少的部分放在Dockerfile的前面,这样可以充分利用镜像缓存。

环境变量。Docker容器运行时很有可能需要一些环境变量,在Dockerfile中设置默认的环境变量是一种有效的方案。

4)基础镜像。如果有技术储备,建议自己制作基础镜像;如果自己不能制作基础镜像,建议选用成熟的基础镜像,镜像包尽可能小;使用基础镜像时建议写上镜像版本,防止镜像更新时latest标签会指向不同的镜像,这时构建镜像有可能失败。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。