概念篇
1. Container Image(容器镜像)
不用再解释了,就是容器镜像。以前叫Docker Image,现在叫Container Image更准确些,因为有了OCI容器规范后,容器不再是Docker一家的了。
2. ImageStream
ImageStream是OpenShift独有的一种对象,在Kubernetes中没有对应的对象。它主要目标是简化容积镜像管理,机制就是通过使用标签实现镜像指针。ImageStream包括一系列”标签指针“指向实际的容器,例如下图有latest、8和7版本的容器指针,它们分别指向了不同位置和版本的容器镜像。ImageStream本身并不保存镜像,而是只保存容器元数据和”标签指针“。
ImageStream记录OpenShift使用的Container Image的元数据,这些元数据包括:
ImageStreamTag: 指向Container Image的标签。
ImageStreamImage: 是ImageStreamTag实际指向的Image。
ImageStreamTrigger: 当ImageStreamImage发生变化后,通过ImageStreamTrigger可获取该事件。通常使用ImageStreamTrigger触发依赖变化Image的上层Image进行自动镜像更新。
3. Internal Registry和External Registry
OpenShift内部自带Image Registry用来保存两类Container Image。
一种是Base Image:顾名思义,就是应用使用的基础镜像。Base Image里主要包括应用运行环境,一般不包括应用代码。例如Java应用的Base Image至少要包括JDK。
另一种是App Image:即将应用+Base Image打包的应用镜像。
OpenShift内部自带Image Registry和外部Image Registry的关系如下图。Base Image可以由OpenShift自动从External Registry上拉到Internal Registry,另外OpenShift会将构建好的App Image推送到Internal Registry。