crun

Red HatのGiuseppe ScrivanoによるC言語実装のOCI(Open Container Initiative)ランタイム仕様準拠のコンテナランタイム。標準的な参照実装であるGo製のruncと機能的に相互置換可能でありながら、バイナリサイズ・起動速度・メモリ消費で優位性を持つ。 #container

runcとの違い

  • 実装言語: C(crun) vs Go(runc)。fork/execモデル中心の設計にはCの方が適しているとされる
  • バイナリサイズ: crunは-Osコンパイルで約300KB、runcの約15MBに対して約1/50
  • 速度・メモリ: 100コンテナを順次起動するテストでruncの約2倍の速度、メモリ使用量も大幅に少ない
  • 両者ともOCIランタイム仕様準拠のため、コンテナエンジン側からは相互置換可能

krunハンドラ

アノテーションrun.oci.handler=krunを指定すると、crunはlibkrun.soをロードし、libkrun経由でコンテナをmicroVM内で起動する(wasmハンドラと並ぶ、crunがサポートする代表的な特殊ハンドラの一つ)。これによりconfidential containers(機密コンピューティング)用途で、コンテナ単位の強い隔離を得られる。

位置づけ

Podman・CRI-O等のコンテナエンジンから呼び出される、低レベルなOCIランタイム実装の一つ。Kata ContainersがVM全体でコンテナ環境を包む「コンテナ環境ごとVM化」アプローチなのに対し、crun+krunはOCIランタイムそのものを差し替えることでコンテナ単位のVM分離を実現する点で設計が異なる。

出典

作成日時: 2026-08-17 20:26 / 更新日時: 2026-08-17 20:26