WWDC25でアップルはmacOS上でLinuxコンテナを実行するための「Containerization Framework」と「Container CLI」を発表した。既存のコンテナ環境との違いや特徴を紹介するとともに、公開されたベータ版を用いて開発環境での利用を想定して Docker Desktop / Colima / OrbStack との性能比較を行い、既存のサードパーティーツールを置き換えるほどのインパクトがあるのかどうかを探ってみた。

TL;DR
- Containerization Frameworkは、各コンテナごとに専用の軽量VMが起動する独自のアーキテクチャを採用。コンテナを完全サンドボックス化できるのでセキュリティ向上が期待できる。
- 現時点で docker compose や kubernetes に未対応、macOS 15ではネットワーク周りにも未実装な部分があるため、積極的に使う理由は見当たらない。
- CPUとI/O性能は、OrbStack が特に優れている。Apple Containerization の最適化は今後進むと思われるが、現時点でもオープンソースの Colima と同程度の性能を持っている。
1. Apple Containerizationについて
Apple Containerizationは、macOSにネイティブなLinuxコンテナサポートを直接提供し、Dockerのようなサードパーティーツールを置き換えるもの。単一のVM内で複数のコンテナを実行する従来のコンテナ化ソリューションとは異なり、各Linuxコンテナを専用の軽量なVM内で実行する。
- vminitd: Swiftで書かれた軽量なinit systemで、従来のLinux init systemとは異なり、最小限の環境で動作
- セキュリティ: 各コンテナが独自のVMでサンドボックス化され、コアユーティリティ、動的ライブラリ、libc実装を含まない最小限のファイルシステムを使用
- パフォーマンス: 最適化されたLinuxカーネル設定と軽量init systemにより1秒未満での起動
- ネットワーク: 各コンテナが専用のIPアドレスを取得し、ポートフォワーディングが不要

Container CLIツール
Container CLIはコンテナ管理のためのコマンドラインツールで、使い方はDockerとよく似ている。使い方の詳細は公式チュートリアルドキュメントが分かりやすいので、まずはこの通りに試してみるのがいいと思う。
# 起動
container system start
# コンテナイメージをプル
container image pull alpine:latest
# コンテナを実行
container run -it --rm alpine:latest sh
# 停止
container system stop
volume や compose といった機能にはまだ未対応で、docker contextにも対応してくれると実用的になる。ベンチマークを取るために負荷をかけても一度も落ちたりすることはなく、動作自体は安定していた。
2. ベンチマークによる性能比較
次に各コンテナ環境のCPUとストレージI/O性能について実際にベンチマークを測定し、性能比較をしてみることにする。
ベンチマーク測定条件
今回、ベンチマークを実行するホストの環境は以下の通り。
- OS: macOS 15.5
- CPU: Apple M4 10 cores
- Memory: 32GB
各コンテナのVMには共通して以下のリソースを割り当て、使用するアーキテクチャは aarch64 とした。
- CPU: 8 cores
- Memory: 16GB
比較対象とするコンテナ環境は以下の4種類。
| VMType | MountType | 備考 | ||
|---|---|---|---|---|
| Apple Containerization | Virtualization Framework | VirtioFS | 無料 | 現在はまだベータ版でmacOS 26で正式対応予定 |
| Colima | Virtualization Framework | VirtioFS | 無料 | オープンソース |
| OrbStack | Virtualization Framework | VirtioFS | 個人使用に限り無料 | 商用利用は$8/月〜 |
| Docker Desktop (Personal) | Virtualization Framework | VirtioFS | 無料 | Syncronized File Shares機能は仕組みが根本的に異なるのと、Proプラン($9/月〜)が必要なので今回は比較対象外 |
また、各コンテナエンジンはCPUとMemoryのリソース以外はデフォルト設定とした。ただし、Colima は Apple Virtualization framework と VirtioFS を使用するように以下のように設定を変更した。
vmType: vz
mountType: virtiofs
なお、Docker Desktop の VMM はまだベータ版で、実際に MongoDB や Cassandra などの特定のデータベース使用時に問題が発生しているとのことなので今回は対象外とした。
ベンチマーク結果:CPU
CPU性能については Geekbench 6 を使用して測定した。
Single-core性能はColimaが最も高く、それ以外の Apple Containerization, Docker Desktop, OrbStack はほぼ横並びの値となった。今回、どのコンテナにおいてもVMのベースとしてQEMUではなく、Apple の Virtualization Framework を使用している。このため、それほど差は出ないだろうと想像していたが、予想に反して Colima が頭一つ抜きん出る結果となった。
仮想化オーバーヘッドはどれも10%以下で、このレベルであれば開発マシン用途としてどれを選んでも実用上それほど大差ないと思う。

| Single-core | Multi-core | |
|---|---|---|
| macOS (Host) | 3752 | ※ 14720 |
| Colima | 3604 | 13390 |
| Docker Desktop | 3408 | 13306 |
| OrbStack | 3391 | 13208 |
| Apple Containerization | 3367 | 12882 |
※各コンテナ環境には8CPUコアを割り当てており、macOSホストは10CPUコア全てを使用可能なので、Multi-coreに関してホストOSとの直接比較はできないので参考まで。
ストレージI/O性能
ストレージI/Oの性能差によってビルドやテスト実行時間がすぐに2倍、3倍になったりするので、その差が開発効率にダイレクトに影響してくる。開発環境として使用する上では、むしろCPU性能よりもこちらの方が重要といえる。Windows の WSL2 環境では普通に使っていれば特に気にする必要はないのだが、macOSでは以前からホストOSのディレクトリを Bind Mount した際のストレージI/Oの遅さが問題になっていた。今回は、Bind Mount と 事前に Named Volume を作成して Volume Mount した場合について各コンテナ環境で測定・比較することにした。
ベンチマーク用のソフトウェアは FIO (Flexible I/O Tester) を使用。開発環境での使用を想定して、小さなファイル(bs=4k)のランダム読み書き性能を測定した。仮想化レイヤーの性能を測定するために、コンテナLinux内のキャッシュは --direct=1 として無効化するが、ホストOSや仮想化レイヤーのキャッシュおよび非同期書き込みは特に制限せずにそのまま利用した。よくあるSSDのベンチマークとは違い、意識的にホストOSのページキャッシュに載るようにしているので、その点だけ注意していただきたい。
実際に利用したコマンドは以下の通り。
fio --name=test \
--ioengine=libaio \
--rw=randread \
--bs=4k \
--direct=1 \
--size=512M \
--iodepth=8 \
--numjobs=4 \
--group_reporting \
--directory=/data
ベンチマーク結果:ディスクI/O
Bind Mount (Random bs=4k Q8T4)
ホストOSのファイルシステムを Bind Mount した際の結果は、Read/Writeともに OrbStack が飛び抜けて性能が高く、次点で Docker Desktop という結果になった。Apple Containerization と Colima はあまり良くなかったが、特別なチューニングをしないとこのくらいの値になるのかもしれない。それでも以前の QEMU + OSXFS に比べたら格段に進化している。

| FS | Read (kIOPS) | Read (MiB/s) | Write (kIOPS) | Write (MiB/s) | |
|---|---|---|---|---|---|
| OrbStack | VirtioFS | 158 | 615 | 135 | 527 |
| Docker Desktop | VirtioFS | 128 | 524 | 93 | 363 |
| Apple Containerization | VirtioFS | 102 | 400 | 39 | 153 |
| Colima | VirtioFS | 95 | 374 | 43 | 168 |
Volume Mount (Random bs=4k Q8T4)
Volume Mount の場合は、OrbStack が Read / Write ともに他より性能が高いという結果になった。Docker Desktop と Colima は、Write が若干 Docker Desktop のほうが速いが、Read はほぼ同じ速度だった。なお、Apple Containerization にはまだ Volume を作成する機能がないので、こちらは測定できなかった。

| FS | Read (kIOPS) | Read (MiB/s) | Write (kIOPS) | Write (MiB/s) | |
|---|---|---|---|---|---|
| OrbStack | btrfs | 360 | 1405 | 336 | 1312 |
| Colima | ext4 | 288 | 1126 | 229 | 894 |
| Docker Desktop | ext4 | 286 | 1118 | 259 | 1011 |
| Apple Containerization | - | - | - | - | - |
Bind mount と Volume mount でかなり性能差があるので、自身で編集するソースコードは Bind mount に置いて、Python venv や node_modules 等のライブラリは Volume mount に置くという運用方法が現在でも有効なベストプラクティスと言える。
OrbStack に関しては、サイトの説明にあるようにVMレベルでかなりのチューニングを行っているようだ。独自のキャッシュレイヤーを持っていることと、Volume に btrfs を使っていることは分かったが、具体的なチューニング内容については非公開のため詳細は不明。
The lightweight virtual machine is heavily tuned with both low-level and high-level optimizations to improve performance, save power, and minimize resource usage. This includes novel optimizations built specifically for OrbStack, macOS, and Apple Silicon. OrbStack builds on top of a modern base (VirtioFS) with custom dynamic caching and optimizations to provide fast bind mounts and access to Mac files.
3. まとめ
Apple Containerization は、各コンテナごとに専用の軽量VMが起動する独自のアーキテクチャを採用しているのが特徴。IPアドレスも各VMごとに割り当てられ、コンテナを完全サンドボックス化できるのでセキュリティ向上が期待できる。まだベータ版で最適化はこれからだと思われるが、既に Docker Desktop や Colima と同程度の性能が出ている。ただし、現時点で Volume 作成や docker compose, kubernetes には未対応、macOS 15ではネットワーク周りにも未実装の部分があるため、積極的に使う理由は見当たらない。
以前の QEMU + OSXFS という組み合わせから進化して、現在はどのコンテナプラットフォームも Virtualization Framework + VirtioFS が標準となっている。そのため、大きな性能差はないと思っていたが、ベンチマーク結果を見るとそれなりに違いがあることが分かった。特に OrbStack の性能には目を見張るものがある。個人使用であれば無料で利用できて、商用利用では月$8〜のプランを契約する必要があるが、これだけ性能差があるとその価値は十分にあると思う。どうしてもオープンソースがよいという人には、Colima をお勧めする。
関連リンク