N个技巧,编写更高效Dockerfile

大家好,我是陈泽锋,我在云效负责Flow流水线编排、任务调度引擎相关的工作。在云效的产品体系下,我们服务了各种研发规模、技术深度的的企业用户,收到了非常多的用户反馈。对于使用Flow进行云上构建的用户来说,构建速度是大家普遍关心的关键要素,在深入分析用户案例的过程中,我们发现了许多通用问题,只需要修改优化自己的项目或工程配置,就可以大大提升构建的性能,从而进一步加速CICD的效率。今天我们会以容器镜像构建作为切入点,总结一些在实际工程中,非常实用的优化技巧。

云原生时代下软件的构建和部署离不开容器技术。提到容器,几乎大家下意识都会联想到Docker。而Docker中有两个非常重要的概念,一个是Image(镜像),一个是Container(容器)。前者是一个静态视图,打包了应用的目录结构、运行环境等;后者是一个动态视图(进程),展示的是程序的运行状态(cpu、memory、storage)等信息。接下来的文章主要分享的是如何编写能使Dockerfile构建过程更快速、构建镜像更小的技巧。

镜像定义

首先我们先来了解一下Docker镜像,它由多个只读层堆叠到一起,每一层是上一层的增量修改。基于镜像创建新容器时,将在基础层的顶部添加一个新的可写层。该层通常称为“容器层”。下图展示了一个基于docker.io/centos基础镜像构建的应用镜像,创建出容器时的视图。

从图中我们可以看到镜像构建、容器启动的过程。

首先是拉取基础镜像docker.io/centos;基于docker.io/centos来启动一个容器,运行指令yumupdate后进行docker


转载请注明:http://www.aierlanlan.com/rzfs/4986.html