4.11. 以 OCI 格式镜像基于文件的目录 Operator 镜像


您可以使用 oc-mirror 插件以 Open Containerprojects (OCI)镜像格式而不是 Docker v2 格式镜像 Operator。您可以使用 OCI 格式将 Operator 镜像复制到磁盘上基于文件的目录。然后,您可以将本地 OCI 镜像复制到目标镜像 registry。

重要

使用 oc-mirror 插件以 OCI 格式镜像 Operator 镜像只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

使用 OCI 功能时,镜像不会自动从目标镜像 registry 中修剪。

先决条件

  • 您可以访问互联网来获取所需的容器镜像。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 oc-mirror CLI 插件。

流程

  1. 可选:检索您需要的目录和镜像,并将其保存到磁盘上。如果您已在磁盘上有 OCI 格式的目录镜像,您可以跳过这一步。

    1. 创建镜像设置配置文件:

      复制到磁盘的镜像设置配置文件示例

      kind: ImageSetConfiguration
      apiVersion: mirror.openshift.io/v1alpha2
      mirror:
       operators:
       - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12
         packages:
         - name: aws-load-balancer-operator
      Copy to Clipboard Toggle word wrap

      注意

      使用 OCI 功能时,只有 mirror.operators.catalog 设置可供使用。

      storageConfig 设置将被忽略,而是传递给 oc mirror 命令的位置。

    2. 运行 oc mirror 命令将指定镜像集配置镜像到磁盘:

      $ oc mirror --config=./imageset-config.yaml \ 
      1
      
        --use-oci-feature \                         
      2
      
        --oci-feature-action=copy \                 
      3
      
        oci://my-oci-catalog                        
      4
      Copy to Clipboard Toggle word wrap
      1
      传递镜像设置配置文件。此流程假设它名为 imageset-config.yaml
      2
      使用 --use-oci-feature 标志来启用 OCI 功能。
      3
      要将目录复制到磁盘,请将 --oci-feature-action 标志设置为 copy
      4
      在要输出目录的磁盘上指定一个目录。此流程假设它名为 my-oci-catalog。该路径必须以 oci:// 开头。如果指定的目录不是完整路径,则会在运行 oc mirror 命令的当前工作目录中创建该目录。
      注意

      您可以选择使用 --oci-registries-config 标志来指定到 TOML 格式的 registry.conf 文件的路径。您可以使用它来从不同的 registry 中镜像,如用于测试的预生产位置,而无需更改镜像设置配置文件。

      registry.conf 文件示例

      [[registry]]
       location = "registry.redhat.io:5000"
       insecure = false
       blocked = false
       mirror-by-digest-only = true
       prefix = ""
       [[registry.mirror]]
          location = "preprod-registry.example.com"
          insecure = false
      Copy to Clipboard Toggle word wrap

      registry.mirror 部分中的 location 字段设置为您要从中拉取镜像的替代 registry 位置。registry 部分中的 location 字段必须与您在镜像设置配置文件中指定的 registry 位置相同。

    3. 列出目录内容并验证是否已创建以下目录:

      $ ls -l
      Copy to Clipboard Toggle word wrap

      输出示例

      my-oci-catalog      
      1
      
      oc-mirror-workspace 
      2
      
      olm_artifacts       
      3
      Copy to Clipboard Toggle word wrap

      1
      包含 OCI 目录的目录。此流程假设它名为 my-oci-catalog
      2
      以原始格式在目录中包含每个镜像的目录。
      3
      包含描述此目录引用的 Operator 捆绑包的文件的目录。
  2. 更新镜像设置配置文件,以指定磁盘上要镜像到目标镜像 registry 的目录位置:

    镜像设置配置文件示例,用于镜像 registry

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v1alpha2
    mirror:
     operators:
     - catalog: oci:///home/user/oc-mirror/my-oci-catalog/redhat-operator-index 
    1
    
       packages:
       - name: aws-load-balancer-operator
    Copy to Clipboard Toggle word wrap

    1
    指定磁盘上 OCI 目录位置的绝对路径。此流程假设您使用 my-oci-catalog 作为目录并镜像 redhat-operator-index 目录。该路径必须以 oci:// 开头。
  3. 运行 oc mirror 命令,以处理磁盘上镜像集文件,并将内容镜像到目标镜像 registry:

    $ oc mirror --config=./imageset-config.yaml \ 
    1
    
      --use-oci-feature \                         
    2
    
      --oci-feature-action=mirror \               
    3
    
      docker://registry.example:5000              
    4
    Copy to Clipboard Toggle word wrap
    1
    传递更新的镜像设置配置文件。此流程假设它名为 imageset-config.yaml
    2
    使用 --use-oci-feature 标志来启用 OCI 功能。
    3
    要将目录镜像到目标镜像 registry,请将 --oci-feature-action 标志设置为 mirror
    4
    指定要镜像设置文件的 registry。registry 必须以 docker:// 开头。如果为镜像 registry 指定顶层命名空间,则必须在后续执行时使用此命名空间。
    注意

    您可以选择使用 --oci-insecure-signature-policy 标志将签名推送到目标镜像 registry。

后续步骤

  • 配置集群以使用 oc-mirror 生成的资源。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat