Skip to content

antony@notes:~/container$ cat "What-is-Open-Container-Initiative.md"

What is Open Container Initiative?

2025-03-06· container

What is Open Container Initiative?

Open Container Initiative(OCI)是一個由 Linux Foundation 主導的輕量級開放治理專案,旨在制定關於 container formats 和 runtimes 的開放行業標準。OCI 於 2015 年 6 月 22 日由 Docker、CoreOS 和其他貨櫃行業領導者共同發起。

目前,OCI 包含三個規範:Runtime Specification (runtime-spec)、Image Specification (image-spec) 和 Distribution Specification (distribution-spec)。

Runtime Specification 描述了如何執行解壓縮到磁碟上的「filesystem bundle」。一般而言,OCI implementation 會下載 OCI image,然後將其解壓縮成 OCI Runtime filesystem bundle,此時 OCI Runtime Bundle 將由 OCI Runtime 執行。

整個流程應支持使用者在 container engines(如 Docker 和 rkt)上期望的使用體驗,主要是能夠在無需額外參數的情況下執行 image:

docker run example.com/org/app:v1.0.0
rkt run example.com/org/app,version=v1.0.0

為支持這種使用體驗,OCI Image Format 包含足夠的信息以在目標平台上啟動應用程式(例如命令、參數、環境變數等)。該規範定義了如何創建 OCI image,通常由構建系統完成,並輸出 image manifest、filesystem (layer) serialization 和 image configuration。

從高層次來看 :

  • image manifest 包含關於 image 內容和相依檔的 metadata,包括將被解壓縮以組成最終可執行檔案系統的一個或多個檔案系統序列化檔案的內容可尋址標識。
  • image configuration 則包含應用程式參數、環境等信息。

image manifest、image configuration 和一個或多個 filesystem serializations 的組合被稱為 OCI image。

Docker 正將其貨櫃格式和運行時(runC)捐贈給 OCI,作為這一新努力的基石。runC 現已在 GitHub 上提供:https://github.com/opencontainers/runc。

分發規範於 2020 年 5 月達到 v1.0 版本,旨在標準化分發貨櫃映像的 API,但該規範設計得足夠通用,可作為任何類型內容的分發機制。