搜索

13.7. 导入标签和镜像元数据

download PDF

镜像流可以被配置为从外部 Docker 镜像注册表中的镜像存储库导入标签和镜像元数据。您可以使用几种不同方法进行此操作。

  • 您可以使用 --from 选项使用 oc import-image 命令手动导入 tag 和镜像信息:

    $ oc import-image <image_stream_name>[:<tag>] --from=<docker_image_repo> --confirm

    例如:

    $ oc import-image my-ruby --from=docker.io/openshift/ruby-20-centos7 --confirm
    The import completed successfully.
    
    Name:			my-ruby
    Created:		Less than a second ago
    Labels:			<none>
    Annotations:		openshift.io/image.dockerRepositoryCheck=2016-05-06T20:59:30Z
    Docker Pull Spec:	172.30.94.234:5000/demo-project/my-ruby
    
    Tag	Spec					Created			PullSpec							Image
    latest	docker.io/openshift/ruby-20-centos7	Less than a second ago	docker.io/openshift/ruby-20-centos7@sha256:772c5bf9b2d1e8...	<same>

    您还可以添加 --all 标志来导入镜像的所有标签,而不只导入 latest

  • 与 OpenShift Container Platform 中的大多数对象一样,您还可以将 JSON 或 YAML 定义写入文件,然后使用 CLI 创建对象。将 spec.dockerImageRepository 字段设置为镜像的 Docker pull spec:

    apiVersion: "v1"
    kind: "ImageStream"
    metadata:
      name: "my-ruby"
    spec:
      dockerImageRepository: "docker.io/openshift/ruby-20-centos7"

    然后,创建对象:

    $ oc create -f <file>

当您创建引用外部 Docker registry 中的镜像的镜像流时,OpenShift Container Platform 会在短时间内与外部 registry 通信,以便获取镜像的最新信息。

同步 tag 和镜像元数据后,镜像流对象将类似如下:

apiVersion: v1
kind: ImageStream
metadata:
  name: my-ruby
  namespace: demo-project
  selflink: /oapi/v1/namespaces/demo-project/imagestreams/my-ruby
  uid: 5b9bd745-13d2-11e6-9a86-0ada84b8265d
  resourceVersion: '4699413'
  generation: 2
  creationTimestamp: '2016-05-06T21:34:48Z'
  annotations:
    openshift.io/image.dockerRepositoryCheck: '2016-05-06T21:34:48Z'
spec:
  dockerImageRepository: docker.io/openshift/ruby-20-centos7
  tags:
    -
      name: latest
      annotations: null
      from:
        kind: DockerImage
        name: 'docker.io/openshift/ruby-20-centos7:latest'
      generation: 2
      importPolicy: {  }
status:
  dockerImageRepository: '172.30.94.234:5000/demo-project/my-ruby'
  tags:
    -
      tag: latest
      items:
        -
          created: '2016-05-06T21:34:48Z'
          dockerImageReference: 'docker.io/openshift/ruby-20-centos7@sha256:772c5bf9b2d1e8e80742ed75aab05820419dc4532fa6d7ad8a1efddda5493dc3'
          image: 'sha256:772c5bf9b2d1e8e80742ed75aab05820419dc4532fa6d7ad8a1efddda5493dc3'
          generation: 2

您可以将标签设置为以调度的间隔查询外部 registry,从而通过设置 --scheduled=true 标志和 oc tag 命令(如将标签添加到镜像流中所述) 来同步标签和镜像元数据。

另外,您可以在标签的定义中将 importPolicy.scheduled 设置为 true

apiVersion: v1
kind: ImageStream
metadata:
  name: ruby
spec:
  tags:
  - from:
      kind: DockerImage
      name: openshift/ruby-20-centos7
    name: latest
    importPolicy:
      scheduled: true

13.7.1. 从 Insecure Registries 导入镜像

镜像流可以被配置为从不安全的镜像 registry 中导入标签和镜像元数据,如使用自签名证书签名的镜像元数据或使用普通 HTTP 而不是 HTTPS 进行签名的镜像元数据。

要配置此功能,请添加 openshift.io/image.insecureRepository 注释,并将它设为 true。此设置会在连接到 registry 时绕过证书验证:

kind: ImageStream
apiVersion: v1
metadata:
  name: ruby
  annotations:
    openshift.io/image.insecureRepository: "true" 1
  spec:
    dockerImageRepository: my.repo.com:5000/myimage
1
openshift.io/image.insecureRepository 注解设置为 true
重要

这个选项指示集成 registry 在提供镜像流时回退到镜像流中标记的任何外部镜像的不安全传输,而这存在危险。如果可能,通过将 istag 标记为 insecure 来避免这一风险。

重要

以上定义仅影响导入标签和镜像元数据。要使此镜像在集群中使用(例如,要执行 docker pull),以下之一必须为 true:

  1. 每个节点都使用 --insecure-registry 标志配置 Docker,与 dockerImageRepository 的 registry 部分匹配。如需更多信息,请参阅 主机准备
  2. 每个 istag 规格都必须将 referencePolicy.type 设置为 Local。如需更多信息,请参阅参考资料策略

13.7.1.1. 镜像流标签策略

13.7.1.1.1. 不安全的标签导入策略

以上注解适用于特定 ImageStream 的所有镜像和标签。若要进行精细控制,可以在 istags 上设置策略。在标签的定义中将 importPolicy.insecure 设置为 true,以便只对该标签下的镜像进行回退到不安全传输。

注意

当镜像流被标注为不安全或者 istag 具有不安全的导入策略时,会在特定 istag 下启用回退到不安全的传输。importPolicy.insecure' 设置为 false 无法覆盖镜像流注解。

13.7.1.1.2. 参考策略

Reference Policy 允许您指定引用此镜像流标签的资源的位置。它仅适用于远程镜像(从外部 registry 中导入)。有两个选项可供选择,即 LocalSource

Source 策略指示客户端直接从镜像的源 registry 中拉取。除非镜像由集群管理,否则不会涉及集成的 registry。(不是外部镜像。) 这是默认策略。

Local 策略指示客户端始终从集成的 registry 中拉取。如果要在不修改 Docker 守护进程设置的情况下从外部不安全的 registry 拉取(pull)非常有用。

此策略仅影响镜像流标签的使用。使用其外部 registry 位置直接引用或拉取镜像的组件或操作不会重定向到内部注册表。

pull-through 功能

注册表为客户端提供远程镜像。此功能(默认情况下为启用)必须启用本地参考策略。另外,默认会镜像所有 blobs,以便以后更快地访问。

您可以在镜像流标签规格中将策略设置为 referencePolicy.type

带有本地参考策略的 Insecure Tag 示例

kind: ImageStream
apiVersion: v1
metadata:
  name: ruby
  tags:
  - from:
      kind: DockerImage
      name: my.repo.com:5000/myimage
    name: mytag
    importPolicy:
      insecure: true 1
    referencePolicy:
      type: Local 2

1
将 tag mytag 设置为使用到该 registry 的不安全连接。
2
设置 tag mytag 以使用集成 registry 来拉取外部镜像。如果引用策略类型设为 Source,客户端直接从 my.repo.com:5000/myimage 获取镜像。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.