有人可以解释什么是 openshift镜像流以及它与常规docker镜像有何不同。
我已经阅读了这个(了解容器、图像和图像流)文档,但它并没有解释太多关于图像流的内容。
我知道 docker 镜像是创建容器的蓝图。只是想知道imagesteam是什么?
有人可以解释什么是 openshift镜像流以及它与常规docker镜像有何不同。
我已经阅读了这个(了解容器、图像和图像流)文档,但它并没有解释太多关于图像流的内容。
我知道 docker 镜像是创建容器的蓝图。只是想知道imagesteam是什么?
就像 Kubernetes 中的许多(所有?)种类一样,anImageStream
是一种抽象。如果您可以想象一个Pod
正在运行的容器概念的抽象,那么您可以想象ImageStream
一个镜像注册表(例如 quay.io 或内部容器注册表)中的存储库概念的抽象。 OpenShift 集群)。
以下是镜像注册表中实际存储库的示例,您可以在其中看到它包含与不同版本的镜像相对应的标签列表。
这是一个 的示例ImageStream
,如 OpenShift Web 控制台中所示。您可以看到它包含一个标签列表,就像前面的外部注册表中的存储库示例一样。
在这里您可以看到ImageStreamTags
实际指向不同的存储库,例如注册表中的rhscl/python-27-rhel7
、 和。ubi8/python-38
甚至还有一个ImageStreamTag
指向ImageStreamTag
列表底部的另一个示例。因此,它不完全是与图像注册表的 1:1 映射,它是一种更高级别的抽象。
作为您何时可能选择使用一个的示例,假设您想在 OpenShift 集群中运行您的 Python 应用程序。您可以BuildConfig
通过从 Git 存储库中获取源代码、构建它并将其分层到 Python 3.8 基础镜像之上来知道如何构建您的镜像。然后在构建时,您希望这个新版本替换集群中正在运行的版本。
您可以从ImageStreams
这里受益的几个地方:
如果您引用的基础 Python 3.8 图像BuildConfig
是一个ImageStreamTag
(如python:3.8
上面的示例图片)而不是直接在注册表中的存储库中的图像标记;那么您可以对ImageStreamTag
.
如果您的构建输出到您ImageStreamTag
的 中引用的Deployment
,那么您Deployment
可以自动(或不)更新以推出您的应用程序的新版本。
如果您想更改基础 Python 3.8 映像以指向不同的映像(例如来自不同注册表中的不同供应商,或者您自己的自定义映像),那么您只需要更新ImageStreamTag
其中ImageStream
可能导致重建的您的应用程序映像(以及您为引用 的其他映像而拥有的任何其他构建ImageStreamTag
),以及您的应用程序(以及来自其他此类构建的任何其他应用程序)的新推出。
^这只是您如何使用 的一个示例,ImageStream
并不意味着详尽无遗。