OpenShift-ImageStream指向的镜像是否为内部镜像仓库
ImageStream是OpenShift中的一个特有的资源。在DeploymentConfig/BuildConfig中使用ImageStream和ImageStreamTag时经常会有这样的疑惑:究竟它指向的镜像有没有pull到OpenShift内部的镜像仓库呢?我们使用DeploymentConfig发布应用时,集群会从内部镜像仓库中pull镜像,还是从指向的外部镜像仓库中拉取?
大家来看一下下面这个例子:
1 | $ oc import-image openshift/jenkins:v3.10 --from=docker.io/openshift/jenkins-2-centos7:v3.10 --confirm |
猜一猜,以上这条命令是否会将镜像拉取到内部镜像仓库?
答案是否定的,内部镜像仓库并不会
拉取镜像本身,只是获取镜像的元数据,将创建的ImageStreamTag openshift/jenkins:v3.10
指向镜像docker.io/openshift/jenkins-2-centos7:v3.10
。这里的关键就是ImageStream[Tag]的一个配置项:referencePolicy.type。导入镜像时,referencePolicy.type默认为source。
所以如果需要将导入镜像到ImageStream[Tag],并将它自动拉取到内部镜像仓库,需要设置referencePolicy.type为local,在DeploymentConfig第一次部署拉取镜像时,镜像也会导入到私有镜像仓库中。
1 | apiVersion: v1 |
在使用oc import-image
时需要添加参数--reference-policy='local'
,如下
1 | $ oc import-image openshift/jenkins:v3.10 --reference-policy='local' --from=docker.io/openshift/jenkins-2-centos7:v3.10 --confirm |
或者是通过docker push
将镜像推送到镜像仓库
1 | $ docker pull docker.io/openshift/jenkins-2-centos7:v3.10 |
参考文章:
https://austindewey.com/2018/12/09/a-word-about-openshift-imagestreams/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论