【コンテナランタイム】

コンテナランタイム とは?

最終更新:
💡 配置の指示を受けて、コンテナを実際に動かすエンジン

コンテナの作成・起動・停止などを担う実行用ソフトウェア。containerdのようにイメージや実行状態を管理するものと、runcのようにOS上でプロセスを起動するものがある。クラスタ内の配置を決めるオーケストレーターとは役割が異なる。

📌 このページのポイント
コンテナを動かす役割の分担 Linuxの構成例/すべて同じ構成ではない kubelet ノードで指示 CRI containerd イメージ・実行管理 shim runc 仲介して 低レベル実行 Linux上のコンテナ 設定・ファイルからプロセスを起動 クラスタ内の配置を決める役割とは別
矢印は実行の指示の流れです。containerdとruncの間にはshimが仲介します。CRIはkubeletとランタイムの接続、OCIは実行設定などの共通化に関係し、対応OSや必要な機能の確認も必要です。
ひよこ ひよこ
コンテナランタイムって何?Dockerとは違うの?
ペンギン先生 ペンギン先生
コンテナを作成・起動・停止する実行の仕組みだよ。Docker EngineにはCLI、API、デーモンがあり、イメージやネットワークなども扱う。その実行を支える部品としてランタイムを使うんだ。
ひよこ ひよこ
Dockerの中では、何がコンテナを動かすの?
ペンギン先生 ペンギン先生
Docker Engineはcontainerdを使って実行のライフサイクルを管理するよ。Linuxの代表的な構成では、containerdのshimという仲介部品がruncを呼び、プロセスを起動する。別のランタイムを設定することもできるんだ。
ひよこ ひよこ
上と下で、役割が違うんだね?
ペンギン先生 ペンギン先生
containerdはイメージの取得やファイルの準備、実行状態の管理などを担う。runcはOCIの設定に従ってLinux上でコンテナを起動するよ。管理と低レベル実行を分担する構成例で、どの環境も必ず同じ2層というわけではないんだ。
ひよこ ひよこ
Kubernetesとは、どうつながっているの?
ペンギン先生 ペンギン先生
各ノードのkubeletがCRIというインターフェースで対応ランタイムに指示するよ。クラスタのどのノードへ置くかを決める処理と、そのノードで実際に動かす処理は別の役割なんだ。
ひよこ ひよこ
OCIに対応すれば、どこでも同じように動くの?
ペンギン先生 ペンギン先生
OCI Runtime Specificationは、実行に使うファイルと設定の束や、実行時の扱いを共通化するよ。ただしホスト固有の設定は調整が必要な場合がある。イメージの形式、対応OSやCPU、必要な機能も確認しよう。規格への対応だけで、全環境の動作が保証されるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンテナランタイム」って出てきたら「コンテナを実際に動かすエンジン」と思えばだいたいOK!
📖 おまけ:英語の意味
「Container Runtime」 = コンテナ実行環境
💬 Runtimeはプログラムを動かす実行環境を表す言葉だよ。コンテナでは、実行に必要な設定やファイルをもとにプロセスを動かす仕組みを指すんだ

参考資料

← 用語集にもどる