Open Container Initiative
From Wikipedia, the free encyclopedia
Open Container Initiative(OCI)は、OSレベル仮想化の一種である「コンテナ」のフォーマット・ランタイムの業界標準策定を目的として設立されたイニシアチブである[1]。Linux Foundationプロジェクトの1つである[2]。
OCI Runtime Spec
Container
OCI RuntimeにおけるContainerは「『隔離とリソース制限を設定可能なプロセス実行』を提供する1つの環境」である[5]。例えばruncランタイム上で生成されたContainerは他のコンテナからファイルシステムやプロセスが隔離され、利用可能なCPUリソース等に制限がかけられている。ゆえにこのコンテナ(環境)内で実行されるプロセスは隔離とリソース制限を得ることができる。
OCI Runtime SpecではこのContainerのライフサイクル等を定義している。
status
OCI Containerはcreating, created, running, stopped以下のいずれかの状態あるいはランタイムが拡張した状態にある[6]。
Runtime
OCIにおけるRuntimeはContainerの管理を司るプログラムである。Runtimeはbundleから設定ファイルを読み込み、それに基づいてコンテナを生成、コンテナ内でプロセスを起動し、その他のコンテナライフサイクル管理を実行する[7]。
OCI Runtime Specに準拠した様々なコンテナランタイムが実装されている。
- runc: 広く利用されているリファレンス実装。containerd[8](を利用するDocker[9])やcri-o[10]のランタイムとして利用されている
- kata-runtime: 軽量VMで高い安全性を志向するKata Containers[11]のランタイム[12]
- runsc: 高い安全性を志向するgVisorのランタイム[13]
他にも様々なランタイムが開発された。
- RailCar: Rustで実装されたOCI Runtime実装 (開発終了)
filesystem bundle
OCIにおける filesystem bundle は、コンテナに必要な全ファイルが定められた形式で配置された1つのセットである[14]。bundleは設定情報を含むconfig.jsonおよびコンテナのrootファイルシステムから成る。Runtimeはコンテナidとfilesystem bundleからコンテナを生成する[15]。