一,背景
以openstack为代表的IaaS开源技术和以Docker为代表的PaaS/CaaS容器技术日益成熟,二者如何强强联合,一直是业界颇为关心的焦点领域。Openstack是个大和全的IAAS开源体系框架,涉及的技术领域和组件非常多;对openstack的可用性和管理维护上是最让人头疼的的两个难题;我们的华云虚拟化平台是基于openstack演进而来,必不可少的会带有这两个问题,而通过docker容器化华云虚拟化平台的管理方案解决以上两个问题。经过调研和对比,华云虚拟化平台服务容器化选用kolla进行自动化构建。相比于其他部署工具,Kolla完全革新地使用了Docker容器技术,将每一个华云虚拟化平台服务运行在不同的Docker容器中。
二,原理
Kolla是基于使用 Dockerfile + jinja2 实现的构建镜像。大致原理是Kolla 中嵌入了docker和jinja2,使用 Jinja2 模板生成 Dockerfile 文件,然后把Dockerfile文件投喂给docker进行容器镜像的构建,构建完成,还可以根据配置将镜像推送的指定的 Registry 服务器。
(容器镜像构建)
Jinja2模板示例:
Kolla在构建镜像过程中可以通过读取配置填充到jinja2的模板中,生成不同的架构的镜像例如X86 或ARM。
三,详细构建流程:
1,根据需要修改kolla-build的配置,构建时会读入该配置
2,生成dokcerfile时会把 docker 整个目录复制到一个临时的工作目录,然后在其中扫描包含有 Dockerfile.j2 文件的文件夹,一个文件夹就对应一个镜像。
3,构建镜像列表是将上一步生成的 Dockerfile 都读取到内存,处理里面的 FROM 语句,可以获得每个镜像的 parent 名字。还有其它一些关于安装方式的细节也要处理,不用过多关心。这一步完成我们就得到了一个镜像列表
4,查找和建立镜像关系是遍历整个镜像列表,把它们的依赖关系整理清楚,因为华云虚拟化平台服务组件很多,各个组件之间存在依赖关系,需要把他们理清楚
5,过滤出目标镜像列表:因为总共镜像数量比较多,所以需要根据用户提供的参数做一下过滤,过滤的参数可以通过配置文件指定
6,构建:真正进行容器镜像的构建工作,此时是根据目标镜像列表中的数据进行构建的
7,构建完后,会反馈哪些镜像构建成功,哪些构建失败
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。
责任编辑:kj005
文章投诉热线:156 0057 2229 投诉邮箱:29132 36@qq.com