13.2. 标记镜像
在使用 OpenShift Container Platform 镜像流及其标签前,它有助于首先了解容器镜像的上下文中的镜像标签。
容器镜像可向它们添加名称,以便更直观地确定它们所包含的内容,称为 标签。使用标签指定镜像中包含的内容版本是常见用例。如果您有一个名为 ruby 的镜像,则可以将名为 2.0 的 2.0 标签用于 Ruby,另一个名为 latest 来指示该仓库中最新构建的镜像。
使用 docker
CLI 直接与镜像交互时,docker tag
命令可以添加标签,后者本质上为由多个部分组成的镜像添加一个别名。这些部分包括:
<registry_server>/<user_name>/<image_name>:<tag>
如果镜像存储在带有内部 registry(OpenShift Container Registry)的 OpenShift Container Platform 环境中,则上面的 <user_name>
部分也可以引用一个项目或命名空间。
OpenShift Container Platform 提供 oc tag
命令,该命令类似于 docker tag
命令,但是在镜像流上运行,而非直接在镜像上运行。
如需有关直接使用 docker
CLI 标记镜像的更多信息,请参阅 Red Hat Enterprise Linux 7 的 Getting Started with Containers 文档。
13.2.1. 将标签添加到镜像流
请记住,OpenShift Container Platform 中的镜像流包含 0 个或更多由标签标识的容器镜像,您可以使用 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
标志会创建一个非导入的镜像流标签。该标签持久指向源位置。
如果要指示 Docker 始终从集成的 registry 中获取标记的镜像,请使用 --reference-policy=local
。registry 使用 pull-through 功能 为客户端提供镜像。默认情况下,镜像 Blob 由 registry 在本地进行镜像。因此,下次需要时便可更快拉取(pull)。只要镜像流有一个 insecure annotation,或标签有一个 insecure import policy,该标志也允许从不安全的 registry 拉取(pull),无需向 Docker 守护进程提供 --insecure-registry
。