美文网首页Openshift:可靠的Kubernetes发行版
OpenShift ImageStream指向的镜像是否为内部镜

OpenShift ImageStream指向的镜像是否为内部镜

作者: 潘晓华Michael | 来源:发表于2019-07-24 00:32 被阅读10次
    Openshift内部镜像仓库

    ImageStream是OpenShift中的一个特有的资源。在DeploymentConfig/BuildConfig中使用ImageStream和ImageStreamTag时经常会有这样的疑惑:究竟它指向的镜像有没有pull到OpenShift内部的镜像仓库呢?我们使用DeploymentConfig发布应用时,集群会从内部镜像仓库中pull镜像,还是从指向的外部镜像仓库中拉取?
    大家来看一下下面这个例子:

    $ 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第一次部署拉取镜像时,镜像也会导入到私有镜像仓库中。

    apiVersion: v1
    kind: ImageStream
    metadata:
      ...
      tags:
        - ...
          referencePolicy:
            type: Local
    

    在使用oc import-image时需要添加参数--reference-policy='local',如下

    $ oc import-image openshift/jenkins:v3.10 --reference-policy='local' --from=docker.io/openshift/jenkins-2-centos7:v3.10 --confirm
    

    或者是通过docker push将镜像推送到镜像仓库

    $ docker pull docker.io/openshift/jenkins-2-centos7:v3.10 
    $ docker tag docker.io/openshift/jenkins-2-centos7:v3.10 docker-registry-default.example.com/openshift/jenkins-2-centos7:v3.10 
    $ docker login -p `oc whoami -t`  -e unused -u unused docker-registry-default.example.com
    $ docker push docker-registry-default.example.com/openshift/jenkins-2-centos7:v3.10
    

    参考文章:
    https://austindewey.com/2018/12/09/a-word-about-openshift-imagestreams/

    相关文章

      网友评论

        本文标题:OpenShift ImageStream指向的镜像是否为内部镜

        本文链接:https://www.haomeiwen.com/subject/bbbzlctx.html