6.8. 导入和使用镜像和镜像流
以下小节介绍了如何导入和使用镜像流。
6.8.1. 从私有容器镜像仓库(registry)导入镜像和镜像流
镜像流可以被配置为从需要身份验证的私有镜像仓库中导入标签和镜像元数据。如果您将 Cluster Samples Operator 用来拉取内容的位置改为 registry.redhat.io 以外的位置,则适用这个过程。
从不安全或安全容器镜像仓库导入时,secret 中定义的容器镜像仓库 URL 必须包含 :80
端口后缀,或在尝试从容器仓库仓库导入时不使用 secret。
流程
您必须通过输入以下命令来创建一个用于存储凭证的
secret
对象:$ oc create secret generic <secret_name> --from-file=.dockerconfigjson=<file_absolute_path> --type=kubernetes.io/dockerconfigjson
配置 secret 后,请创建新镜像流或输入
oc import-image
命令:$ oc import-image <imagestreamtag> --from=<image> --confirm
在导入过程中,OpenShift Container Platform 会提取 secret,并将其提供给远程方。
6.8.2. 使用清单列表
使用 oc import-image
或 oc tag
CLI 命令时,您可以通过添加 --import-mode
标志来导入单个子清单或清单列表的所有清单。
请参考以下命令,以创建包含单个子清单或多架构镜像的镜像流。
流程
输入以下命令来创建包含多架构镜像的镜像流,并将导入模式设置为
PreserveOriginal
:$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --reference-policy=local --confirm
输出示例
--- Arch: <none> Manifests: linux/amd64 sha256:6e325b86566fafd3c4683a05a219c30c421fbccbf8d87ab9d20d4ec1131c3451 linux/arm64 sha256:d8fad562ffa75b96212c4a6dc81faf327d67714ed85475bf642729703a2b5bf6 linux/ppc64le sha256:7b7e25338e40d8bdeb1b28e37fef5e64f0afd412530b257f5b02b30851f416e1 ---
或者,输入以下命令使用
Legacy
导入模式导入镜像,这会丢弃清单列表并导入单个子清单:$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='Legacy' --confirm
注意--import-mode=
默认值为Legacy
。排除这个值,或者没有指定Legacy
或PreserveOriginal
,会导入单个子清单。无效的导入模式会返回以下错误:error: valid ImportMode values are Legacy or PreserveOriginal
。
限制
使用清单列表有以下限制:
在某些情况下,用户可能想直接使用子清单。当运行
oc adm prune images
或CronJob
修剪器运行时,它们无法检测何时使用子清单列表。因此,使用oc adm prune images
或CronJob
修剪器的管理员可能会删除整个清单列表,包括子清单列表。为避免这种限制,您可以根据标签或摘要使用清单列表。
6.8.2.1. 配置定期导入清单列表
要定期重新导入清单列表,您可以使用 --scheduled
标志。
流程
输入以下命令将镜像流设置为定期更新清单列表:
$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --scheduled=true
6.8.2.2. 导入清单列表时配置 SSL/TSL
要在导入清单列表时配置 SSL/TSL,您可以使用 --insecure
标志。
流程
设置
--insecure=true
,以便导入清单列表跳过 SSL/TSL 验证。例如:$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --insecure=true
6.8.3. 为 --import-mode 指定架构
您可以通过排除或包含 --import-mode=
标志来在多架构和单一构架之间交换导入的镜像流
流程
运行以下命令,通过排除
--import-mode=
标志,将镜像流从多架构更新至单一架构:$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name>
运行以下命令,将镜像流从单架构更新至多架构:
$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal'
6.8.4. --import-mode 的配置字段
下表描述了 --import-mode=
标志可用的选项:
参数 | 描述 |
---|---|
Legacy |
|
PreserveOriginal | 指定后,会保留原始清单。对于清单列表,将导入清单列表及其所有子清单。 |