AppleがWWDC 25でMac上でコンテナを作成・実行するツールを公開しました。
Appleのサイトにもトランスクリプトやサマリーの記載がありましたが、動画の内容をまとめてみます。
コンテナ化フレームワークの紹介
Michaelが、新しいオープンソースのSwiftフレームワーク「Containerization(コンテナ化)」を紹介。本フレームワークは、Swiftで書かれたセキュアかつ高性能なLinuxコンテナ実行環境をmacOS上で提供することを目的としています。
コンテナの基礎と利点
Linuxコンテナは、アプリケーションの開発・テスト・デプロイを隔離された環境で行うための標準的な手法です。ホストマシンや他のコンテナから隔離し、アプリケーションとその依存関係(バイナリ、ライブラリ、アセットなど)を1つのユニットにパッケージングし、再現性の高い動作保証とセキュリティ、プライバシー、柔軟性を提供します。
macOS上でLinuxコンテナを実行する課題と方針
macOS上でLinuxコンテナを動作させるためにはLinux環境の仮想化が必要ですが、従来の方法は大規模な仮想マシンを起動し、リソースを共用担当するものでした。Containerizationは以下の目標に基づいて設計されました:
- 各コンテナにVMレベルの隔離を提供
- 仮想マシン内の必要最小限のユーティリティのみを使用し、攻撃面を最小化
- コンテナごとのアクセス制御によるプライバシーの強化
- パフォーマンスとリソース効率の両立
コンテナの作成と実行の仕組み
Containerizationでは、コンテナは「イメージ」から作られ、イメージにはファイルシステムと設定情報が含まれています。これをローカルディスクに保存し、Linuxが理解できるext4形式でブロックデバイスとして利用可能。
各コンテナは独立した軽量仮想マシンで実行され、個別のIPアドレスを持つことでネットワークパフォーマンスを確保し、ポートマッピングも不要に。
vminitdの役割と最小限の実行環境

仮想マシン内では、Swiftで書かれた初期化プロセス「vminitd」が実行され、下記の役割を担います:
- ネットワーク設定(IPアドレスの割り当て)
- ファイルシステムのマウント(ブロックデバイス経由)
- プロセスの管理(起動・監視)
セキュリティの観点から仮想マシンのファイルシステムにはコアユーティリティや動的ライブラリ、libcなどは含まず、vminitdはMusl libcとSwift Static Linux SDKを使い、静的リンクされた実行ファイルとして提供されます。
コマンドラインツール「container」の使用
CLIツール「container」を使うことで、コンテナの構築と管理が容易に行えます:
- 例:
container image pull alpine:latest
でイメージを取得 - コンテナ実行:
container run -it alpine:latest sh
により対話型シェルを起動可能 - コンテナ内でのプロセスは完全に隔離され、他のプロセスは見えない
終わりに
Containerizationは、Swiftで書かれたLinuxコンテナのAPIとツールを提供し、セキュアでプライベート、かつ高性能なmacOS上でのLinuxコンテナ運用を可能にします。GitHubからソースコード取得やリクエスト、参加が可能で、今後の開発者コミュニティへの貢献が期待されています。
コメント