
rkt(ロケット)は、米CoreOS社が2014年12月に「Rocket」として発表したコンテナランタイムです。Dockerデーモンの単一障害点・root権限要求・セキュリティモデルへの不満を背景に、「systemdと協調し、デーモンレスで動き、署名検証を組み込んだ堅牢なコンテナ実行環境」を掲げて開発が始まりました。appc(App Container)仕様の参照実装としてOCI登場前の競合フォーマットを牽引しましたが、2018年のRed HatによるCoreOS買収後に活動が縮小し、2019年8月にCNCFのアーカイブ入りが決定、2020年2月に正式に開発終了となった、コンテナ史上の重要な敗者です。
この記事の目次
- デーモンレス・systemd協調・署名検証
- Rocket発表からアーカイブまで
- rktが残した教訓
- Dockerとの比較
- まとめ
デーモンレス・systemd協調・署名検証

rktの設計はDockerに対する明確な批判として組み立てられました。第一の柱がデーモンレスで、rkt runを実行すると即座にコンテナプロセスが立ち上がり、デーモンが間に挟まりません。Docker 1.x系で問題視されていた「dockerdが落ちると全コンテナが管理不能になる」という単一障害点を回避し、システムサービスとしての堅牢性を確保することを狙いました。rktは起動後、ホスト側のinitプロセス(systemd)にコンテナの監視を任せ、自身は終了します。
第二の柱がsystemdとの協調で、rktで起動したコンテナはsystemdから見て普通のサービス(systemd unit)として扱えます。ログはjournaldに流れ、起動順序や依存関係もsystemdの仕組みで制御でき、「Linuxの作法に素直に従うコンテナ」という思想が一貫していました。第三の柱が起動前の署名検証で、appc仕様の.aciイメージはGPG署名を必須化でき、rktは取得時と実行時の両方で署名を確認しました。「セキュアバイデフォルト」をうたい、当時のDockerが署名検証を任意機能としていた点との差別化要素となりました。
Rocket発表からアーカイブまで

rktの物語は、CoreOSのCEOアレックス・ポルヴィが2014年12月にブログで発表した「Rocket」プロジェクトから始まります。「Dockerは肥大化しすぎ、セキュリティ要件を満たさない」と公然と批判し、対抗となるコンテナ仕様App Container(appc)と参照実装Rocketを公開しました。RedditやHacker Newsで大きく話題になり、Docker社が翌2015年にOpen Container Initiative(OCI)を発足させる流れの直接の引き金となった、業界政治的に重要な発表でした。
2016年2月にrkt 1.0がリリースされ、CoreOS自身のクラスタ管理ツールTectonicやKubernetesから利用可能になりました。しかしOCI仕様の標準化が進むにつれてappcの存在意義は薄れ、Kubernetesも2017年以降CRI+OCIランタイム(containerd、CRI-O)への移行を進めました。2018年1月、Red HatがCoreOSを2億5000万ドルで買収すると発表し、CoreOSのプロジェクト群はRed Hatの製品戦略に再編されました。Red HatはすでにCRI-OとPodmanを持っており、rktは重複機能として開発リソースが急速に縮小しました。2019年8月にCNCFはrktのアーカイブを正式決定し、2020年2月にプロジェクトが終了しました。
rktが残した教訓

rktは事業としては敗れましたが、その思想はコンテナエコシステムの随所に痕跡を残しています。デーモンレスのコンテナ実行モデルは、後発のPodmanが直接の継承者となり、現在ではRHEL/Fedoraの既定ツールになっています。起動前の署名検証という発想は、2021年に登場したSigstore/cosignによって一般化され、サプライチェーンセキュリティの中核として広く採用されるに至りました。rktがなければ、これらの機能の登場はもっと遅れていた可能性があります。
また、appc仕様自体は終了したものの、その議論を経てOCI Image Spec/Runtime Specが整理され、ベンダーニュートラルなコンテナ標準が結実しました。rktはKubernetesがCRIを導入する直接の動機の一つにもなりました(rktを取り込むためのrktnetesという実装が一時期存在しました)。ContainerLinux(CoreOSの後継)やFlatcar Linuxといったコンテナ専用OSの思想にもrktの設計哲学は流れ込んでおり、「Dockerデーモンに依存しないLinux環境」という現代の選択肢を支える土台として、その遺産は今も生き続けています。
Dockerとの比較

rktとDockerは2015年頃のコンテナ戦争で最も激しく競合した一対でした。rkt陣営は「Dockerは複雑で危険」、Docker陣営は「rktは普及していない」と互いに批判し、業界が分裂しかけた局面でした。結局Docker社はOCIの旗振り役となって標準化を主導し、自社の優位性を保ちながら市場を成熟させる戦略を選び、CoreOS陣営はその枠組みの中で吸収されていきました。技術的に正しいだけでは普及には不十分で、エコシステムと標準化、コミュニティ規模が決定的、という典型例となりました。
現在、rkt自体を採用する選択肢はありません。実運用のニーズに対しては、Podman、containerd、CRI-Oといった現代のツール群が、当時rktが掲げた問題意識を引き継ぎつつ実装しています。コンテナ史を学ぶ上では、rktは「Docker一強の世界に異議を申し立てて敗れたが、その遺産は確実に現在のツール群に流れ込んでいる」存在として記憶されるべき、重要なマイルストーンです。
まとめ
rktは2014年にCoreOSが発表し、Dockerデーモンモデルへの対抗として登場したコンテナランタイムです。デーモンレス・systemd協調・署名検証という先進的な設計を打ち出しましたが、OCIの台頭とRed Hat買収を経て、2020年2月に開発が終了しました。事業としては敗れたものの、その思想はPodmanやSigstoreに引き継がれ、コンテナエコシステムの多様性を促進した功労者として歴史に名を残しています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント