5.2. 标记镜像
以下小节提供了在容器镜像上下文中使用镜像标签的概述和说明,以便使用 Red Hat OpenShift Service on AWS 镜像流及其标签。
5.2.1. 镜像标签
镜像标签(tag)是应用于存储库中容器镜像的标签,用于将特定镜像与镜像流中的其他镜像区分开来。标签通常代表某种版本号。例如,这里 :v3.11.59-2
是标签:
registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2
您可以向镜像添加其他标签。例如,可为镜像分配 :v3.11.59-2
和 :latest
标签。
Red Hat OpenShift Service on AWS 提供了 oc tag
命令,该命令类似于 docker tag
命令,但会在镜像流上运行,而不是直接在镜像上运行。
5.2.2. 镜像标签惯例
镜像随时间不断发展,其标签反应了这一点。一般来说,镜像标签会始终指向最新镜像构建。
如果标签名称中嵌入太多信息,如 v2.0.1- May-2019
,则标签仅指向镜像的一个版本,不会更新。使用默认镜像修剪选项,此类镜像不会被删除。
如果标签命名为 v2.0
,则镜像修改的可能性更大。这会导致标签历史记录更长,镜像修剪器 (pruner) 也更有可能删除旧的和未使用的镜像。
您可自行决定标签命名惯例,下面提供了一些 <image_name>:<image_tag>
格式的示例:
描述 | 示例 |
---|---|
修订 |
|
架构 |
|
基础镜像 |
|
最新(可能不稳定) |
|
最新稳定 |
|
如果标签名称中需要日期,请定期检查旧的和不受支持的镜像以及 istags
,并予以删除。否则,您可能遇到保留的旧镜像导致资源使用量增加的情况。
5.2.3. 向镜像流中添加标签
Red Hat OpenShift Service on AWS 中的镜像流包含 0 个或更多由标签标识的容器镜像。
有各种不同类型的标签可用。默认行为使用 permanent
标签,指向一段时间内的特定镜像。如果正在使用 permanent
标签并且源更改,则目的地的标签不会更改。
tracking
标签表示,在导入源标签期间对目的地标签的元数据进行了更新。
流程
您可使用
oc tag
命令向镜像流中添加标签:$ oc tag <source> <destination>
例如:要将
ruby
镜像流static-2.0
标签配置为始终引用ruby
镜像流2.0
标签的当前镜像:$ oc tag ruby:2.0 ruby:static-2.0
这会在
ruby
镜像流中创建名为static-2.0
的新镜像流标签。运行oc tag
时,新标签会直接引用ruby:2.0
镜像流标签所指向的镜像 id,而所指向的镜像不会改变。为确保目标标签在源标签更改时进行更新,请使用
--alias=true
标志:$ oc tag --alias=true <source> <destination>
使用跟踪标签创建持久别名,如 latest
或 stable
。该标签只在单一镜像流中正常工作。试图创建跨镜像流别名会出错。
-
您还可添加
--scheduled=true
标志来定期刷新或重新导入目的地标签。周期在系统级别进行全局配置。 --reference
标志会创建一个非导入的镜像流标签。该标签持久指向源位置。如果要指示 Red Hat OpenShift Service on AWS 始终从集成的 registry 获取标记的镜像,请使用
--reference-policy=local
。registry 使用 pull-through 功能为客户端提供镜像。默认情况下,镜像 Blob 由 registry 在本地进行镜像。因此,下次需要时便可更快拉取(pull)。只要镜像流具有不安全的注解,或者标签具有不安全的导入策略,该标志也允许从不安全的 registry 拉取(pull),无需向容器运行时提供--insecure-registry
。
5.2.4. 从镜像流中删除标签
您可以从镜像流中删除标签。
流程
要从镜像流运行中完全删除标签:
$ oc delete istag/ruby:latest
或:
$ oc tag -d ruby:latest
5.2.5. 引用镜像流中的镜像
您可以通过以下引用类型,使用标签来引用镜像流中的镜像。
引用类型 | 描述 |
---|---|
|
|
|
|
|
|
查看镜像流定义示例时,您可能会发现它们包含 ImageStreamTag
的定义以及对 DockerImage
的引用,但与 ImageStreamImage
无关。
这是因为当您将镜像导入或标记到镜像流时,Red Hat OpenShift Service on AWS 中会自动创建 ImageStreamImage
对象。您不必在用于创建镜像流的任何镜像流定义中显式定义 ImageStreamImage
对象。
流程
要引用给定镜像流和标签的镜像,请使用
ImageStreamTag
:<image_stream_name>:<tag>
要引用给定镜像流的镜像和镜像
sha
ID,请使用ImageStreamImage
:<image_stream_name>@<id>
<id>
是针对特定镜像的不可变标识符,也称摘要。要引用或检索给定外部 registry 的镜像,请使用
DockerImage
:openshift/ruby-20-centos7:2.0
注意如果未指定标签,则会假定使用
latest
标签。此外,您还可引用第三方 registry:
registry.redhat.io/rhel7:latest
或者带有摘要的镜像:
centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e