Open Container Initiative
OCI ImageはOCI Image Format Specificationによって定義されるコンテナイメージ仕様である。OCI Imageにはディレクトリ/ファイル情報と実行時設定が含まれており、OCI Imageに準拠したコンテナイメージをOCI Runtimeに準拠したコンテナランタイムへ渡すことでコンテナを実行できる。
OCI Imageは以下の4要素で構成される。
Manifest: コンテナイメージに含まれるlayersとconfigurationのハッシュ値等が記述されたJSONファイル(例)
image index (任意)
set of filesystem layers: ファイルシステムのchangesets (tar, tar.gz, tar.zstdとメタデータ)
Configuration: アプリケーションの引数、環境変数等の設定情報が記述されたJSONファイル(例)
OCI Imageはファイルシステム情報をそのまま持つのではなく、changesetつまり元ファイルシステムに対する変更差分を用いて保有している(c.f. Git)。これにより元ファイルシステムにすべての変更履歴(layers)を適用することで完全なファイルシステムを生成できるようになっている。
OCI Runtimeでは、OCI Image layersから得られたファイルシステム実体とImage Configurationの変換で得られたconfig.jsonからfilesystem bundleを得ることでコンテナを生成する(image → bunble → container)。