【シーアールアイオー】

CRI-O とは?

💡 Kubernetesのためだけに生まれた、無駄ゼロのランタイム
📌 このページのポイント
CRI-O:KubernetesとコンテナのつながりかたO Kubernetes kubelet CRI呼び出し CRI-O OCI準拠ランタイム 起動 コンテナ OCI準拠イメージ Kubernetes kubelet(旧) 旧方式 Docker (削除済み1.24+) コンテナ 上段: CRI-O経由(現在の主流) 下段: Docker経由(廃止)
CRI-OがKubernetesとコンテナをつなぐ仕組み
ひよこ ひよこ

CRI-Oって聞いたことあるけど、Dockerとどう違うの?

ペンギン先生 ペンギン先生

CRI-OはKubernetesのためだけに作られた軽量なコンテナランタイムだよ。Dockerはもともと開発者向けのツールで機能が多いけど、CRI-Oは「Kubernetesコンテナを動かす」その一点に絞って設計されているんだ。

ひよこ ひよこ

じゃあDockerの代わりに使われてるってこと?

ペンギン先生 ペンギン先生

そうだよ。昔はKubernetesDockerを経由してコンテナを動かしていたんだけど、Kubernetes 1.24以降はDockerShimが削除されてね。代わりにCRI-OやcontainerdといったCRI対応ランタイムが使われるようになったんだ。

ひよこ ひよこ

CRIって何なの?

ペンギン先生 ペンギン先生

CRIはContainer Runtime Interfaceの略で、KubernetesコンテナランタイムをつなぐAPIの規格だよ。この規格に対応していれば、どんなランタイムでもKubernetesと組み合わせられる仕組みなんだ。

ひよこ ひよこ

CRI-Oを使うとどんないいことがあるの?

ペンギン先生 ペンギン先生

シンプルな分だけ軽くて速いし、攻撃できる箇所(アタックサーフェス)が少なくてセキュリティ面でも有利だよ。それにOCI準拠のイメージならDockerイメージもそのまま動かせるから互換性も問題ないんだ。

ひよこ ひよこ

OCIって標準規格があるんだね!

ペンギン先生 ペンギン先生

そうだよ。OCIコンテナイメージや実行方法の標準を定める業界団体でね、CRI-Oはその標準に完全準拠しているから、DockerビルドのイメージもPodmanで作ったイメージも同じように実行できるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CRI-O」って出てきたら「KubernetesコンテナDockerなしで動かすためのランタイム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Container Runtime Interface - OCI」 = コンテナランタイムインターフェース(OCI準拠)
💬 KubernetesのCRI仕様(Container Runtime Interface)とOCI(Open Container Initiative)を組み合わせた名前だよ。Kubernetesプロジェクトが主導して開発されたよ。
← 用語集にもどる