Kubernetes、Dockerに依存しないKubernetes用の軽量コンテナランタイム「cri-o」正式版1.0リリース

2017年10月19日

Kubernetesは、Dockerに依存しない軽量コンテナランタイム「cri-o」正式版1.0リリースした。cri-oはコンテナランタイムとしてはDockerに競合するが、コンテナイメージなどを作る機能などは備えていない。


Kubernetesに最適化された軽量なコンテナランタイム「cri-o」の正式版、「cri-o 1.0」がリリースされました

cri-o

cri-oは、Kubernetesの育成プロジェクト(Kubernetes Incubator Project)として開発されています。

Red Hatに所属するcri-oエンジニアリングチームのDaniel Walsh氏は、cri-oのオフィシャルブログに投稿された記事「CRI-O 1.0 is here」で、Dockerに依存しないコンテナランタイムであるcri-oの開発動機について次のように説明しています。

We felt at the time that the upstream Docker project was changing too quickly and was making Kubernetes unstable. We felt that perhaps by simplifying the container runtime we could do better.

そのとき(訳注:cri-oの開発を検討し始めたとき)、Dockerプロジェクトはあまりに早く変化しすぎていて、Kubernetesを不安定にしていた。そこで、私たちなら多分、シンプルにしたコンテナランタイムをもっとうまくつくれるだろうと考えたのだ。

cri-oはOCIとCRIの2つの標準に準拠

cri-oは2つの標準に準拠したコンテナランタイムです。

1つはコンテナランタイムおよびコンテナイメージの標準仕様を規定しているOCI(Open Container Initiative)への準拠です。これにより、すでにOCIに準拠しているDockerコンテナ用のイメージはそのままcri-oでも実行できます。

つまり、Docker Hubなどのレジストリに保存されたDockerイメージを、cri-oにロードしてそのまま実行可能だということです。

もう1つの標準はKubernetes 1.5から開発が進んでいる「CRI」(Kubernetes Container Runtime Interface)です。これはKubernetesとコンテナランタイムとのあいだで命令や情報をやりとりするためのAPI仕様です。

CRIに準拠したコンテナランタイムであれば、Kubernetesのコンテナランタイムとして使うことができます。

OCIとCRIの標準の位置づけを図にすると以下のようになります。

cri-oが対応するOCIとCRI

現在、ほぼすべてのコンテナランタイムはOCI対応であり、今後Kubernetesの普及を考えればCRI対応も進んでいくはずです。KubernetesはこのCRI標準に対応したコンテナランタイムであればcri-oでもDockerでも任意のコンテナランタイムが利用可能になると説明されています。

要するに、Kubernetes側から見ればコンテナランタイムを自由に選べることになるのです。

cri-oとDockerの競合と共存

cri-oはKubernetesに最適化されたコンテナランタイムという点で、Kubernetesを統合すると発表したDockerと競合する側面を持つことは間違いありません。

本番環境などにおいてより軽量で安定したコンテナランタイムとして、cri-oがDockerよりも選ばれることは十分にありえます。

一方で、cri-oはコンテナランタイムとして最適化されているため、Dockerコマンドのようなコンテナを操作するための柔軟なコマンド体系や、Dockerイメージを生成する機能などを備えていません。

そのためアプリケーションの開発フェーズやコンテナイメージの作成などにおいて使われるのは間違いなくDockerでしょう。

現時点でcri-oとDockerの位置づけはこのように解釈し住み分けができると考えることができます。しかし、コンテナ周りはまだまだダイナミックな動きが続いており、いつ意外なことが起きても不思議ではないでしょう。

参考

関連記事

あわせて読みたい

Kubernetes コンテナ型仮想化 cri-o




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本