一,背景

以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,构建完后,会反馈哪些镜像构建成功,哪些构建失败

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党