【コンテナディー】

containerd とは?

💡 コンテナを動かす裏方の仕事人
📌 このページのポイント
containerd コンテナランタイムの構造 Kubernetes(kubelet)/ Docker Engine CRI gRPC containerd(高レベルランタイム) イメージ管理 スナップショット コンテナ管理 containerd-shim(プロセス管理) OCI仕様 runc(低レベルランタイム) Linuxカーネル(namespaces, cgroups)
containerdを中心としたコンテナランタイム階層のイメージ
ひよこ ひよこ

containerdって、Dockerとは違うの?

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

Dockerの中に入っている部品の一つだよ。Dockerはユーザー向けの便利な機能(ビルド、ネットワーク管理など)を提供していて、その裏側でコンテナを実際に動かしているのがcontainerdなんだ。

ひよこ ひよこ

なんでわざわざ分かれているの?

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

関心の分離だね。Kubernetesのような他のツールがDockerなしでもコンテナを動かせるように、コアのランタイム部分を独立させたんだ。実際にKubernetesはv1.24からDockerを介さず直接containerdを使うようになったよ。

ひよこ ひよこ

CRIっていうのも関係あるの?

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

CRIはKubernetesがコンテナランタイムとやり取りするための共通インターフェースだよ。containerdはCRIプラグインを持っているから、Kubernetesと直接つながれるんだ。

ひよこ ひよこ

普段の開発で意識する必要はあるの?

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

普通のアプリ開発では意識しなくて大丈夫だよ。ただしKubernetesクラスタの運用者や、コンテナのパフォーマンスチューニングをする場面では、containerdの設定を理解していると役に立つんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「containerd」って出てきたら「コンテナを実際に動かすエンジン部分」と思えればだいたいOK!
📖 おまけ:英語の意味
「containerd」 = コンテナのデーモン
💬 container + d(daemon)で、バックグラウンドで動くコンテナ管理プロセスという意味だよ
← 用語集にもどる