What is Image Stream?
每一個 image stream 代表著一個 Docker-formatted container image;它其實只是一個在 OpenShift 中內部對於 docker image 的命名方式,讓系統可以使用指定的名稱找到正確的 docker image 來使用。(類似 Docker 中對每個 image 使用 tag 來命名)
也因為有自己內部的命名方式,因此 Image Stream 就可以包含以下來源的 image:
OpenShift 內部的 container registry
其他的 image stream
外部的 image repository (例如:DockerHub, CoreOS Quay)
在 OpenShift 中,image stream 可與 Build & Deployment 搭配完成特定的自動化功能;由於 Build & Deployment 都可以監控特定 image stream,當 image stream 指向的 image 有新版產生時,可自動的進行特定的 build or deploy 的工作。
建立第一個 Image Stream
以下是一個 ImageStream 的定義範例:
1 |
|
透過以上的 image stream 定義,在 OpenShift Build or Deployment 中,就可以使用 myubuntu:xenial
指定外部 DockerHub 中的 ubuntu:16.04
image。
當以上 ImageStream 被建立後,我們可以查詢到以下資訊:
1 | $ oc get is |
若使用 oc get is/myubuntu -o=yaml
指令檢視 YAML 輸出,得到以下內容:
1 | apiVersion: v1 |
Image Stream Image
image stream image(簡稱 isimage) 是一種 virtual resource,讓使用者可以透過 isimage 從特定的 image stream 取得 image,isimage 以 <image stream name>@<image name>
的方式呈現,因此以上面的範例來看,image steam image 就會是:
myubuntu@sha256:152b4ccc429f6f28533aff625d8345baf1ba3808e9a99446e86b2bf3efa18571
Image Stream Tag
image stream tag(簡稱 istag) 是一個指到上面 image stream image 的 name pointer,可指向 local or 外部的 image,此外 isiage 還包含了 image 內容變動的歷史紀錄,這樣的設計讓使用者可以在有需要的時候方便的進行 rollback。
istag 以 <image stream name>:<tag>
的方式呈現,因此以上面的範例來看, istag 就會是:
myubuntu:16.04
Conclusion
有了 Image Stream(is), Image Stream Image (isimage), 以及 Image Stream Tag(istag) 的觀念之後,下一個階段將會介紹如何在 OpenShift 中管理 Image。