2025/06/09 20:53 Containerization is a Swift package for running Linux containers on macOS

ロボ子、今日はContainerizationというSwift製のパッケージについて話すのじゃ。Apple silicon上でLinuxコンテナを動かすためのものらしいぞ。

コンテナを動かすためのパッケージですか。Dockerみたいなものでしょうか?

Dockerとは少し違うのじゃ。これはApple siliconのVirtualization.frameworkを使っているのが特徴だぞ。APIも色々あって、OCIイメージの管理から、ext4ファイルシステムの作成、Netlinkソケットとの連携までできるらしい。

OCIイメージやext4ファイルシステムまで扱えるのはすごいですね。リモートレジストリとの連携もできるとのことですが、具体的にどのようなことができるのでしょうか?

リモートレジストリからコンテナイメージをpullしたり、逆にpushしたりできるのじゃ。Docker Hubみたいなところにアクセスできるイメージじゃな。

なるほど。コンテナごとに専用IPアドレスを作成して、ポートフォワーディングが不要になる設計も興味深いですね。

そうじゃろ?各コンテナを軽量仮想マシン内で実行するからこそできることじゃな。しかも、最適化されたLinuxカーネルと軽量initシステムのおかげで、コンテナが1秒未満で起動するらしいぞ。

1秒未満ですか!それはかなり速いですね。vminitdというサブプロジェクトも気になります。これはどのような役割を担っているのでしょうか?

vminitdは、仮想マシン内で最初に起動するプロセスで、GRPC APIを提供するのじゃ。ランタイム環境の設定やコンテナ化されたプロセスの起動を担っているらしい。I/O、シグナル、イベントを呼び出し元プロセスに提供するのも特徴じゃな。

なるほど、コンテナの初期化と管理を行うのですね。ところで、Containerizationを使うには、Apple silicon Macが必要とのことですが、他の要件はありますか?

macOS 15以降とXcode 26 Beta、またはmacOS 26 Beta 1以降が必要じゃ。あと、macOS 15では非分離コンテナネットワーキングは利用できないらしいから注意が必要じゃな。

ネットワークに関しては少し制約があるのですね。Linuxカーネルも自分で用意する必要があるのでしょうか?

最適化されたカーネル設定が提供されているから、それを使うのが簡単じゃな。もちろん、異なるカーネル構成とバージョンをコンテナごとに使うこともできるAPIもあるぞ。

柔軟性も考慮されているのですね。SwiftlyとStatic Linux SDKをインストールして、`make all`でビルドするとのことですが、テストも用意されているのでしょうか?

`make test integration`で基本的なテストと統合テストを実行できるぞ。統合テストにはカーネルが必要じゃ。

テストが用意されているのは安心ですね。ドキュメントも生成できるとのことですが、APIドキュメントはどのように確認できますか?

`make docs`と`make serve-docs`でAPIドキュメントを生成して、ローカルでプレビューできるのじゃ。

ローカルで確認できるのは便利ですね。バージョン0.1.0が最初の公式リリースとのことですが、今後のロードマップはどうなっているのでしょうか?

まだバージョン0.1.0だから、これからどんどん進化していくはずじゃ。ソースの安定性はマイナーバージョン内でのみ保証されているから、アップデートには注意が必要じゃな。

わかりました。Containerization、とても興味深いパッケージですね。私も試してみようと思います。

そうじゃろ、そうじゃろ。ロボ子もこれでコンテナマスターじゃ!…って、ロボットなのにコンテナマスターって、ちょっと変かの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。