全7378文字

ベンダー各社によって標準化が進む

 2015年6月、Docker社とCoreOS社が中心となり、コンテナの技術仕様を標準化する団体「Open Container Initiative」(OCI、発足当初は「Open Container Project」)の発足が発表されました。発足メンバーとしてGoogle、Red Hat、米VMware(ブイエムウェア)、米Amazon.com(アマゾン・ドット・コム)社、米Microsoft(マイクロソフト)社など業界をリードするベンダー各社が賛同しました。標準化に当たって、Docker社はコンテナ実行機能libcontainerを切り出して「runc」と改名して公開し、コンテナランタイムのレファレンス実装としてOCIに寄贈しました。

 2016年12月には実行中のコンテナのライフサイクル管理やコンテナイメージの管理、ネットワークの管理などを担うDockerのコア機能が「containerd」としてDockerから分離し、開発されていくことが発表されます。2020年4月現在、「Cloud Native Computing Foundation(CNCF)」の下で開発が続けられています。この他にも「Compose」や「HyperKit」などDockerが持つ機能がコンポーネントとして分離され、2017年4月に発表された「Moby Project」により管理されています。

主要なコンテナランタイム

 ここまでDockerの登場からコンテナの普及、そして標準化の流れを説明してきました。コンテナの利用拡大に伴い、OSSの「Kubernetes」をはじめとしたコンテナオーケストレーションシステム(詳しくは第2回で説明)を通じてコンテナを操作する手法が主流となっています。コンテナの実行環境(ランタイム)には、オーケストレーションシステムとの連携も求められています。

 ここでは、現在主流となっているコンテナランタイムについて説明します。コンテナランタイムは、大きく「ハイレベル」「ローレベル」の2種類に分けられます(図2)。ハイレベルランタイムがコンテナオーケストレーションシステムと直接やりとりして命令を受け、コンテナの作成・削除などのリクエストをローレベルランタイムに伝えてローレベルランタイムが処理するイメージです。

図2●ハイレベルランタイムとローレベルランタイム
図2●ハイレベルランタイムとローレベルランタイム
[画像のクリックで拡大表示]

 それぞれの代表的なランタイムを見ていきましょう。