什麼是OCI和OCI工件?

banq發表於2022-03-22

OCI(開放容器倡議)管理一些與容器映象的儲存、分發和執行相關的規範和專案。
如果您曾經執行過 docker 容器,那麼無論您是否知道,您都曾與這些規範進行過互動。

Docker映象和 OCI映象大部分是相同的。在 OCI 的早期,最普遍的容器格式是 Docker。
隨著供應商推動中性規範,Docker映象清單格式包含一堆對Docker公司的硬編碼引用。
見:Docker 清單(稱為Image Manifest 2 Schema Version 2)

這個清單中的樣板檔案是瞭解 OCI映象是什麼以及為什麼不是 OCI映象的重要部分,特別是以下mediaType欄位:

“mediaType”: “application/vnd.docker.distribution.manifest.v2+json”
“mediaType”: “application/vnd.docker.container.image.v1+json”
“mediaType”: “application/vnd.docker.image.rootfs.diff.tar.gzip”


隨著時間的推移,大多數註冊管理機構都增加了對新mediaTypes格式的支援,但想要保持可移植性的工具需要繼續支援舊格式。

OCI 工件(Artifacts)計劃旨在使登錄檔格式更加通用,以允許使用者儲存和分發任意檔案。
它也得到了平臺供應商的廣泛支援,最終恰好是構建生產 Kubernetes 環境的唯一真正依賴項。

HelmTektonCDOPA等與Kubernetes 相鄰的專案開始順應這一趨勢,允許將配置、圖表和策略模組儲存在 OCI 登錄檔中。其他包管理器也紛紛效仿,比如Homebrew甚至WASM

OCI工件不是新型別,也不是新的規範登錄檔和工具,是關於如何使用清單中的特定欄位來指示清單包含的內容的文件化約定。
不幸的是,它還沒有得到足夠廣泛的支援而無法使用。一些規範依賴它(主要是 WASM),而其他規範則不依賴它。

相關文章