概要
Containerization はApple silicon向けのLinuxコンテナ管理パッケージ。 Swift製 で、Virtualization.frameworkを活用。 OCIイメージ管理や仮想マシン生成など多機能。 最適化Linuxカーネル で高速起動と軽量動作を実現。 macOS 15以降、Apple silicon必須。
Containerizationパッケージ概要
- Linuxコンテナ をApple silicon上で動作させるためのSwift製パッケージ
- Virtualization.framework を利用し、各コンテナを独立した軽量仮想マシンで実行
- OCIイメージ管理、リモートレジストリ連携、ext4ファイルシステム生成
- Netlinkソケット ファミリーとの連携機能
- 最適化Linuxカーネル によるサブセカンド起動
- 仮想マシン生成・管理機能、ランタイム環境制御
- Rosetta 2 を活用し、Apple silicon上でx86_64プロセス実行対応
設計と特徴
- 各Linuxコンテナは 独立した軽量仮想マシン 内で動作
- 各コンテナに 専用IPアドレス割当 可能、個別ポートフォワーディング不要
- 最小限のrootファイルシステム と軽量initシステム(vminitd)による高速起動
- vminitdは gRPC API をvsock経由で提供し、プロセス起動やI/O管理を実現
- プロセス実行時のI/Oやシグナル、イベント の伝達機能
動作要件
- Apple silicon搭載Mac 必須
- ビルド要件
- macOS 15以降 & Xcode 26 Beta
- macOS 26 Beta 1以降
- アプリケーション実行は macOS 15以上
- macOS 15では非分離型ネットワーク不可 (同一vmnet内のコンテナ間通信不可)
使い方例・ツール
- cctlコマンド によるAPI機能の試用
- OCIイメージ操作
- コンテナレジストリへのログイン
- ルートファイルシステムブロック生成
- シンプルなLinuxコンテナ実行
Linuxカーネルについて
- 仮想マシン起動にはLinuxカーネル必須
- kernelディレクトリ に最適化カーネル設定とビルド環境を同梱
- 最小限の機能セット で高速・軽量動作を実現
- API経由でカーネル構成やバージョンを個別指定可能
- ワークロードごとに異なるカーネルバージョン検証に対応
- Kata Containers プロジェクトが推奨する最適化済みカーネル(vmlinux.container)も利用可能
ビルド・セットアップ手順
- Swiftly, Swift, Static Linux SDK のインストール
- make cross-prepコマンド実行
- .swiftly/env.shの反映確認
- which swiftでパス確認
- 古いSDKの削除(必要に応じて)
- ビルド: make all
- テスト: make test integration
- カーネル未所持の場合はmake fetch-default-kernelで取得
- make all test integrationで一括実行
Protobuf・ドキュメント生成
- grpc-swift・swift-protobufのバージョン依存
- make protosでRPCインターフェース再生成
- make docs, make serve-docsでAPIドキュメント生成・プレビュー
- open http://localhost:8000/documentation/ で閲覧
コントリビューション・プロジェクト状況
- 貢献歓迎、詳細はCONTRIBUTING.md参照
- バージョン0.1.0 が初の公式リリース
- ソース安定性保証はマイナーバージョン間のみ
- 例:0.1.1と0.1.2間
- .upToNextMinorVersion(from: "0.1.0") 指定で破壊的変更回避
- 今後のマイナーバージョンでルール変更の可能性あり