OpenShift构建镜像

使用镜像和仓库作为source和output

1、准备一个git仓库,包含一个Dockerfile,以下仅包含一行内容用于最简单的演示。

FROM docker.io/bitnami/nginx:1.21.6

以gitlab仓库为例,你可以使用github等其他仓库

2、创建BuildConfig文件

点击构建,选择构建配置,创建构建配置。

构建配置内容如下,注意source为git仓库地址。

apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:name: mywebsitelabels:app: mywebsite
spec:source:type: Gitgit:ref: mainuri: http://192.168.72.20:8929/root/nginx-democontextDir: ./strategy:type: DockerdockerStrategy:dockerfilePath: Dockerfileoutput:to:kind: DockerImagename: registry.example.com:8443/library/nginx-helloworld:v1.0

其中output指定镜像构建完成后推送到本地harbor镜像仓库,推送镜像需要为openshift配置权限和ca证书:

参考:https://docs.openshift.com/container-platform/4.10/cicd/builds/setting-up-trusted-ca.html

oc create configmap registry-cas -n openshift-config \--from-file=registry.example.com..8443=/etc/docker/certs.d/registry.example.com:8443/ca.crtoc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=merge

点击开始构建,自动生成一个新的构建任务

点击构建,查看构建日志,成功完成构建并推送镜像到harbor仓库:

使用镜像流作为source和output

如果构建完成后要输出到镜像流,需要启用openshift内置registry仓库,openshif默认未启用registry,执行以下操作启用,使用临时存储的快速解决方案(没有用于持久性的存储类):

参考:https://docs.openshift.com/container-platform/4.10/registry/configuring-registry-operator.html

1、切换到openshift-image-registry项目

oc project openshift-image-registry

2、编辑configs.imageregistry.operator.openshift.io

oc edit configs.imageregistry.operator.openshift.io

修改以下内容

...managementState: Managed
...
...replica: 1
...
...storage:emptyDir: {}

确认新部署了image-registry pod

root@bastion:~# oc -n openshift-image-registry  get pods
NAME                                              READY   STATUS      RESTARTS   AGE
cluster-image-registry-operator-ddd96d697-p4fdx   1/1     Running     0          2d2h
image-pruner-27486720-ddzxx                       0/1     Completed   0          31h
image-pruner-27488160-vxmmb                       0/1     Completed   0          7h6m
image-registry-746b8888d4-6pdbb                   1/1     Running     0          61s
node-ca-7zt48                                     1/1     Running     0          2d2h
node-ca-8fb9j                                     1/1     Running     0          2d2h
node-ca-dtsrl                                     1/1     Running     0          2d2h
node-ca-kn4pl                                     1/1     Running     0          2d2h
node-ca-vt6fm                                     1/1     Running     0          2d2h

然后公开注册表访问地址到集群外:

oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge

查看访问地址

root@bastion:~# oc get routes
NAME            HOST/PORT                                                      PATH   SERVICES         PORT    TERMINATION   WILDCARD
default-route   default-route-openshift-image-registry.apps.okd4.example.com          image-registry   <all>   reencrypt     None

本地拉取镜像

参考:https://access.redhat.com/solutions/4308191

mkdir -p /etc/docker/certs.d/default-route-openshift-image-registry.apps.okd4.example.com/
oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
cp tls.crt /etc/docker/certs.d/default-route-openshift-image-registry.apps.okd4.example.com/# token可以从console用户管理界面获取
export USERNAME=admin
export TOKEN=sha256~uC0tBK7zzeOM9dsoQ0kWIZO5W_ILPzhLvqc5qnTpZG0docker login -u $USERNAME -p $TOKEN default-route-openshift-image-registry.apps.okd4.example.comdocker pull default-route-openshift-image-registry.apps.okd4.example.com/demo/local-image

使用内部仓库部署应用

oc create configmap registry-local -n openshift-config \--from-file=registry.example.com..8443=/etc/docker/certs.d/registry.example.com:8443/ca.crt \--from-file=default-route-openshift-image-registry.apps.okd4.example.com=/etc/docker/certs.d/default-route-openshift-image-registry.apps.okd4.example.com/tls.crtoc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-local"}}}' --type=merge

2、使用imagestreamTag

创建imagestream

oc import-image bitnami-nginx:1.20.2 --from="docker.io/bitnami/nginx:1.20.2" --confirm
oc import-image mywebsite2:latest --from="docker.io/bitnami/nginx:1.20.2" --confirm

创建BuildConfig,source和output配置为ImageStreamTag

apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:name: mywebsite2labels:app: mywebsite2
spec:source:type: Gitgit:ref: masteruri: http://192.168.72.20:8929/root/nginx-democontextDir: ./strategy:type: Docker                      dockerStrategy:dockerfilePath: Dockerfilefrom:kind: ImageStreamTagnamespace: demoname: bitnami-nginx:1.20.2output:to:kind: ImageStreamTagname: mywebsite2:latesttriggers:- type: ImageChange

现在,当构建运行时,OpenShift 会将Dockerfile 中的FROM行替换为来自镜像流的镜像。
在日志中,您可以看到 OpenShift 替换了 FROM 指令:

Cloning "http://192.168.72.20:10880/gogs/nginx-demo.git" ...
Commit: 031ff4e5124c8cb057c0576bed21fce88dc60e52 (更新 'Dockerfile')
Author: gogs <willzhmic@outlook.com>
Date: Thu Apr 7 02:27:13 2022 +0000
Replaced Dockerfile FROM image docker.io/bitnami/nginx:1.21.6

OpenShift构建镜像相关推荐

  1. Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)

    Dockerfile 是一个文本文件,记录了镜像构建的所有步骤. 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 dock ...

  2. Docker学习(8)——构建镜像(Dockerfile、commit)

    前言 在前面的文章里我们已经详细介绍了构建镜像的两种常用方式,下面我们将具体看看如何实际操作,以及镜像的优化方式. 一.commit封装镜像 以ubuntu的镜像为例: 1.导入ubuntu镜像 [r ...

  3. mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像

    mysql-master Dockerfile 首先,Dockerfile 长这样,具体的命令上面有解释.核心逻辑就是拷贝两个文件进去,然后在容器启动的时候执行 conf.sh,由 conf.sh 执 ...

  4. 使用Dockerfile构建镜像

    Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命 ...

  5. docker构建镜像 发布镜像

    Dockerfile命令大全 # 引用 FROM centos # 作者信息 MAINTAINER vitcloud<vitcluod@163.com># 运行环境路径 ENV MYPAT ...

  6. dockerfile构建镜像的命令_编写Dockerfile的最佳实践

    虽然 Dockerfile 简化了镜像构建的过程,并且把这个过程可以进行版本控制,但是很多人构建镜像的时候,都有一种冲动--把可能用到的东西都打包到镜像中.这种不正当的 Dockerfile 使用也会 ...

  7. (干货)构建镜像之docker commit

    Docker提供了两种构建镜像的方法:docker commit命令喝Dockerfile构建文件. docker commit   不推荐 (1).这是手工构建镜像的方式,容易出错,效率低且可重复性 ...

  8. golang 基于Mac os 构建镜像

    golang测试项目 项目内容如下: package mainimport ("fmt""net/http" )func main() {http.Handle ...

  9. docker -v 覆盖了容器中的文件_springboot配合maven打成可执行jar,构建镜像部署到docker容器中...

    本篇文章将介绍springboot应用如何打成jar包,并将jar构建为docker镜像部署到docker中 应用打包 需要配合spring-boot-maven-plugin打包,将以下代码放到应用 ...

最新文章

  1. Docker Dockerfile
  2. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)
  3. python在线读-Python电子书免费分享
  4. 更改记录表CDHDR和CDPOS
  5. JSON的使用场景及注意事项介绍
  6. Google API:如何访问Google Analytics(分析)数据?
  7. nginx配合python_人生苦短我用python[0x02] nginx与python结合
  8. 用户态和核心态的转换
  9. 2018云计算开源产业大会将发布四大报告、三项评估结果
  10. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
  11. ansible web_最小的Web浏览器,Microsoft Access替代品,Ansible,Kubernetes,JavaScript,piwheel等
  12. 3-31Pytorch与auto-variabletensor
  13. 事件冒泡、事件捕获、事件委托
  14. css控制td比内容宽5px_CSS从零开始——布局
  15. 周立功串口服务器维修方法,周立功医生| 告诉你RS485通信的小秘密
  16. java读取pdf的文字、图片、线条和对应坐标
  17. 网线插座板上网络模块接线
  18. CSS3知识点复习与总结
  19. filebeat收集日志到elsticsearch中并使用ingest node的pipeline处理
  20. PR模板 复古回忆棱镜光效梦幻内容展示PR视频模板

热门文章

  1. 仙人路 - 创业大佬之马云北大演讲:阿里为何不设班车
  2. 非正常关闭计算机的危害为___,深入探讨非正常关机对电脑的危害
  3. 美食杰实现菜谱大全功能
  4. 笔记本电脑忘记开锁密码怎么办?(超详细教程,只适用于2013年以后生产的笔记本电脑,且为win10操作系统)
  5. 如何给应用增加图片编辑功能:剪裁、滤镜、贴纸、排版、标签……(持续更新中)
  6. 首师大附中集训第十三天综合模测
  7. 全国英语等级考试计算机辅助口语考试,全国英语等级考试 计算机辅助高考口语考试练习软件文档...
  8. 人脸识别再曝安全漏洞,15分钟解锁19款安卓手机,只需打印机、A4纸和眼镜框即可...
  9. CSS 中,为什么绝对定位(absolute)的父级元素必须是相对定位(relative)?
  10. 浅谈开关电源MOS管发热的原因