【ランシー】
runC とは?
💡 コンテナを実際に「走らせる」最小単位のエンジン
📌 このページのポイント
- OCI Runtime Specification準拠のコンテナ実行エンジン(Go言語実装)
- DockerのlibcontainerをOCIに寄贈して2015年に誕生
- containerdから呼び出される形でKubernetesやDockerの深部で動く
- namespaceとcgroupsの設定・プロセスの起動・コンテナライフサイクル管理を担う
runCって聞いたことなかったけど、Dockerと何が違うの?
じゃあ普通の開発者はrunCを直接使うことないの?
普段はほぼないよ。runCはKubernetesやcontainerdが内部で呼び出すもので、エンドユーザーは意識しなくていいんだ。でもコンテナランタイムのトラブルシューティングやセキュリティ調査をする立場になると、この仕組みを知っていると原因特定が速くなるよ。
コンテナ技術を特定の企業が独占するのではなく、業界標準にした方が普及するという判断があったんだよ。2015年にDockerがlibcontainerをrunCとしてOCIに寄贈したことで、PodmanやKubernetesなどの他のツールも同じ実装を使える共通基盤ができたんだ。
containerdとrunCはどう役割が違うの?
containerdはコンテナのイメージ管理・ネットワーク・ストレージなど「コンテナの一生全体」を管理する高レベルな層で、runCはその中の「コンテナプロセスを実際に起動・停止する」という一点に特化した低レベルな層なんだよ。containerdがrunCを子プロセスとして呼び出す構造になっているんだ。
📖 おまけ:英語の意味
「runC」 = (run + Container の略)
💬 「コンテナ(Container)を走らせる(run)」という意味が込められた名前だよ