測定した内容と方法
3つのアプリを同じMacで実行しました。Apple M5 Max、メモリ36 GiB、macOS 27.2です。それぞれ8 CPU、12 GiBに設定し、専用のコマンドで起動し直して単独で実行しました。ほかのアプリは終了し、プロセスが残っていないことも確認しています。アイドル時の数値は45秒待って安定させた後の60秒間で測定し、アプリ、補助プロセス、Linuxシステムを含むエンジンなど、その製品の全プロセスを集計しました。コンテナの数値はウォームアップ後の5回の測定の中央値で、差が10 %以内なら同水準としています。
Oxcart 0.1.2は2026-10-10に、同梱のdocker 29.9クライアントで測定しました。OrbStack 2.2.3とDocker Desktop 4.94.0は同日のそれ以前に、同じMacと測定環境でdocker 29.4を使って測定しました。各製品はそれぞれのLinuxカーネルを実行します。1台のマシンで製品ごとに1回の測定を行ったもので、研究調査ではありません。測定方法はすべて共通です。
コンテナなしのアイドル時メモリ
| アプリ | アイドル時メモリ |
|---|---|
| Oxcart 0.1.2 | 776 MiB |
| OrbStack 2.2.3 | 792 MiB |
| Docker Desktop 4.94.0 | 1,745 MiB |
これはコンテナアプリが待機しているだけで使うメモリです。作業の合間や会議中、一日中アプリを開いているノートパソコンでも発生します。OxcartとOrbStackはここでは同水準で、Docker Desktopは2倍以上を保持しています。
コンテナ監視の負荷
ダッシュボード、ターミナルの監視ツール、コーディングエージェントはコンテナの統計を絶えず取得するため、その読み取り負荷は見た目以上に重要です。
| 測定項目 | Oxcart | OrbStack | Docker Desktop |
|---|---|---|---|
ストリーミング中のdocker statsクライアント1つのCPU使用率 | 1.29% | 3.81% | 5.45% |
docker stats --no-stream | 1,038 ms | 2,050 ms | 2,054 ms |
CPUは1コアに対する割合です。Oxcart 0.1.2は2026-10-10に同梱のdocker 29.9クライアントで測定。OrbStack 2.2.3とDocker Desktop 4.94.0は同日のそれ以前に、同じMacと測定環境でdocker 29.4を使って測定しました。
20コンテナの実行中、Oxcart自身のメニューバー項目の負荷は1コアの0.0004%、1秒当たりのウェイクアップは0.033回です。この数値はアプリのみで、エンジンを含みません。
負荷がある状態:同水準
コンテナが実際の作業を始めると、作業自体が負荷の大半を占めるため、各アプリの数値は近づきます。同じ測定から2項目を示します。
| 測定項目 | Oxcart | OrbStack | Docker Desktop |
|---|---|---|---|
| コンテナ内の1 CPU秒当たりのMac CPU使用量 | 1.10× | 1.11× | 1.09× |
| 256 MiBにアクセスするコンテナ当たりのMacメモリ | 235 MiB | 266 MiB | 236 MiB |
実際には、CPUがボトルネックとなるビルドやテストのMac CPU使用量は3つのアプリでほぼ同じです。256 MiBを使うコンテナは、Macでもおよそ同量を使います。違うのは作業の前後です。各docker run、stop、後片付けにかかる時間でOxcartがリードしています(Docker Desktopとの比較、OrbStackとの比較)。
作業が終わるとメモリはmacOSへ
Oxcart 0.1.3以降、最後のコンテナが停止してから約30 s後に、OxcartはLinux側を再起動してメモリをmacOSへ返します。最後のコンテナの停止から32 s後に、3,319 MiBから570 MiBへ低下しました(2回目は3,352から579 MiB)。これは実行中のコンテナがないときだけ行われます。処理はバックグラウンドで行われ、再起動中に届いたDockerコマンドは完了を待つだけです。
Oxcart 0.1.3で測定。
自分のMacでコンテナアプリのメモリを測る
- 負荷の少ないMacから始めます。 ほかのコンテナアプリを終了し、コンテナを停止して、アプリ起動後に1分待ちます。起動時の処理を落ち着かせるためです。
- アプリの全プロセスを探します。 アクティビティモニタで「メモリ」タブを開き、アプリ名を検索します。通常はLinux側を実行するプロセスが最大です。ターミナルでは
ps -axo pid,rss,comm | grep -i <app>で一覧を表示できます。 - macOSが計上するメモリを確認します。 アクティビティモニタの「メモリ」列、または各プロセスへの
footprint <pid>を使い、値を合計します。常駐サイズ(RSS)だけでは、共有メモリや圧縮メモリを過大または過小に数えることがあります。 - ワークロードの実行中に測定します。 普段のComposeスタックを起動して数分使い、同じ数値を再確認します。
docker stats --no-streamはLinux側の各コンテナの使用量を表示します。 - 停止後に測定します。 すべてを停止し、1分後にもう一度数値を確認します。これが作業の合間にアプリがアイドル状態で保持するメモリです。
確認したい設定
- アプリの上限。 各アプリはLinux側が使用できるCPUとメモリに上限を設けています。OxcartではSettings › Resources、または
oxcart config set cpus=6とoxcart config getを使います。値は次回起動時に適用されます。スタックの必要量を大幅に超える上限にしても利点はありません。 - コンテナごとの上限。
docker runの--memory、--cpus、--pids-limit、またはComposeのmem_limit、cpus、pids_limitを使うと、暴走した1つのサービスがすべてのリソースを使い切るのを防げます。 - 使っていないものは停止します。 また使うスタックには
docker compose stop、使わないものにはdocker compose downを使います。Oxcartでは、最後のコンテナを停止することでメモリをmacOSへ返せるようにもなります。 - 軽い方法で監視します。 スクリプトでは
docker stats --no-streamを優先し、コーディングエージェントには生の統計より要約ツールを渡しましょう(AIコーディングエージェント向けDocker)。
よくある質問
MacでDockerはどのくらいメモリを使いますか?
アプリとコンテナの作業内容によります。12 GiBに設定した1台のAppleシリコン Macで、コンテナなしの状態の全プロセスを数えると、Oxcartは776 MiB、OrbStackは792 MiB、Docker Desktopは1,745 MiBでした。コンテナを実行すると、メモリはワークロードに応じて変わります。
Docker Desktopはなぜ大量のメモリを使うのですか?
MacのコンテナアプリはどれもLinuxシステムを実行し、ワークロードがアクセスするメモリはMac上で1つの大きなプロセスとして表示されます。今回の測定ではDocker Desktopのアイドル時の使用量も3つの中で最大で、コンテナなしで1,745 MiBでした。設定でメモリ上限を下げ、不要なコンテナを停止し、同じMacでアイドル時776 MiBだったOxcartなどの代替アプリを比較してみてください。
OxcartはmacOSにメモリを返しますか?
はい。コンテナが何も実行されていないときに返します。Oxcart 0.1.3以降、最後のコンテナの停止から約30 s後にLinux側を再起動し、メモリをmacOSへ返します。リリース前のバージョンでの測定では、最後のコンテナの停止から32 s後に3,319 MiBから570 MiBへ低下しました。実行中のコンテナがない場合にのみ行われます。
コンテナのメモリとCPUを制限するには?
コンテナごとにdocker run --memory 512m --cpus 1.5 …、またはComposeサービスのmem_limitとcpusを使います。Oxcartはdocker updateによるメモリ、CPU、プロセス数の上限変更を適用し、再起動でコンテナが再作成されても維持します。
Oxcartが使えるCPU数とメモリを設定するには?
Settings › Resources、またはターミナルのoxcart config set cpus=4で設定できます。oxcart config getで有効な値とMacの上限を確認できます。新しい値は次回起動時に適用されます。
docker statsはMacを遅くしますか?
docker statsの連続ストリームはどのアプリでもCPUを使います。測定では1コアに対してOxcartが1.3 %、OrbStackが3.8 %、Docker Desktopが5.5 %で、Oxcartが最も低い値でした。20コンテナに対する単発のdocker stats --no-streamはOxcartで1.0 s、ほかの2つの約半分でした。
出典と測定方法
- Oxcart 0.1.2、OrbStack 2.2.3、Docker Desktop 4.94.0を2026-10-10に同じMac(Apple M5 Max、36 GiB、macOS 27.2)で測定。各8 CPU、12 GiBで、1製品ずつ実行しました。
- 最後のコンテナ停止後のメモリ返却:Oxcart 0.1.3。
- メニューバーの負荷:2026-10-09にOxcartで測定。