有两个问题,基础镜像的继承管理和如何处理多个技术栈的应用版本。举个例子,我们对于CentOS 7,做了公司级别的基础OS镜像A,基于这个镜像加入了JDK成为镜像B,基于B加入了JBOSS成为C,在C的基础上再构建项目的APP镜像D。
问题来了:1,有没有办法针对A镜像修改了,B,C和D去级连更新。
2,由于是继承关系,各层软件的版本不同,导致镜像种类就特别多,例如JDK有3种,jboss有三种,那么镜像C就有九种,技术栈深了,命名又成为了问题。
求指导解决思路?
你的提的这个问题非常好,这个问题是每个企业中大量使用容器的时候都会遇到的。
第一个问题:针对A镜像修改了,B,C和D去级连更新。
提到容器大家都在提持续集成持续部署CI/CD,每个镜像都是由Dockerfile来定义,最终执行docker build
命令来镜像构建。推荐选择1-2台服务器专门用来做应用镜像的构建,避免在运行业务容器的服务器上构建镜像影响业务。
系统架构:gitlab存放dockerfile--jenkins job1(A镜像)---jenkins job2(等A构建完成后构建B)--- jenkins job3(等B构建完成后构建C)依次类推......
第二个问题:由于是继承关系,各层软件的版本不同,导致镜像种类就特别多,例如JDK有3种,jboss有三种,那么镜像C就有九种,技术栈深了,命名又成为了问题。
镜像树是这样:baseos--jdk--jboss\tomcat\weblogic---applications,因为dockerfile在gitlab中进行管理,所以不妨你在增加一个文件IMAGE_VERSION=xx
,docker build
时可以取这个文件中的值,版本号你可以取jboss的版本号(在dockerfile中增加一个EVN jboss-version=xxx
就行)。这样即使后面有再多的镜像命名都很好管理了,提前规划好是非常有必要的。
docker镜像管理我建议是以树状结构方式去处理。
以kolla镜像为例
centos7----base ------openstack-base-----nova--base ---nova-api
无法排版;(
收起