【openshift教程-03.2】【s2i镜像定制】
Source to Image流程为应用的容器化提供了一个标准,实现了自动化。OpenShift默认提供Java WildFly、PHP、Python、Ruby及Perl 的S2I Builder镜像。但是现实中的需求五花八门,特殊的应用构建环境需要用户定制S2I的Builder Image来满足。
S2I Builder镜像从本质上来说也是一个普通的Docker镜像,只是在镜像中会加入S2I流程需要的一些脚本和配置。下面将展示一个基础的 S2I Builder镜像的定制过程。
一、准备环境
tar -zxf source-to-image-v1.1.8-e3140d01-linux-amd64.tar.gz -C /usr/bin/
2、通过s2i create命令创建一个名为tomcat-s2i的S2I Builder镜像。第三个参数tomcat-s2i-tmp定义了工作目录的名称。
s2i create tomcat-s2i tomcat-s2i-tmp
cd tomcat-s2i-tmp,会看到Dockerfile、Makefile、s2i等文件
3、s2i文件
1)assemble:负责源代码的编译、构建及构建产出物的部署。
2)run:S2I流程生成的最终镜像将以这个脚本作为容器的启动命令。
3)usage:打印帮助信息。一般作为S2I Builder镜像的启动命令。
4)save-artifacts:为了实现增量构建,在构建的过程中会执行此脚本保存中间构建产物。此脚本并不是必需的。
二、编写Dockerfile
三、编写s2i脚本
四、执行镜像的构建
1、下载对应的tomcat(Dockerfile中使用的版本,也可以在Dockerfile中设置下载)。
cd /root/tomcat-s2i-tmp
make
执行成功后,docker images就可以看到tomcat-s2i镜像已经产生
2、构建成功完成后,可以通过s2i build <源代码地址> <构建输出镜像的名称>命令执行测试此S2I构建镜像。
3、测试镜像
docker run -itd -p 8080:8080 test-app
五、导入Openshift的docker的仓库,就可以在Openshift上形成一个Image Stream,就可以在Openshift上使用了
1、下载build镜像
2、上传到名为openshift的项目(可被其他项目共享模板)
oc import-image registry.intra.XXXXXXXXX.com/yqb/dxm-python-27:latest -n openshift --confirm --insecure=true
3、修改镜像,tags设为builder
oc edit imagestream dxm-python-27

4、设置权限,使pod可以使用任何uid;也可以在模板里指定uid
OR:
