TL;DR

コンテナのランタイムとイメージに関する標準を定めるために、2015 年に Docker 社をはじめとする複数の企業が設立した団体。現在は Linux Foundation の傘下にある。

なぜ必要か

公式サイトによると、OCI の目標は、コンテナのフォーマットとランタイムに関するオープンな業界標準を作ることである。Docker や rkt のようなエンジンでは、イメージを追加の引数なしで実行できる。イメージ自体がアプリケーションの起動に必要な情報を持つので、標準に準拠したランタイムであれば、どれでも同じイメージを実行できる。

仕組み

OCI は次の 3 つの仕様を管理している。

  • Runtime Specification(runtime-spec): ディスク上に展開した「ファイルシステムバンドル」を実行する方法を定める
  • Image Specification(image-spec): マニフェスト、ファイルシステムのレイヤ、設定からなる OCI イメージの作り方を定める。設定には、起動時の引数や環境変数などが入る
  • Distribution Specification(distribution-spec): コンテナイメージを配布するための API を標準化する。2020 年 5 月に v1.0 になった

設立のときに、Docker 社がコンテナのフォーマットとランタイムの runC を寄贈し、これが標準の土台になった。

関連

出典