Dockerを使用していると、
- コンテナが落ちる
- ビルドが失敗する
- 動作が異常に遅い
といった問題に遭遇することがあります。
その原因の多くは メモリ不足 です。
この記事では、Dockerのメモリを増やす方法を
Mac・Windows・Linux別にわかりやすく解説します。
なぜDockerでメモリ不足が起きるのか#
DockerはホストOSとは別にリソース制限がかかる場合があります。
特に以下のケースで発生します。
- Docker Desktopのデフォルト制限
- コンテナごとのメモリ制限
- 複数コンテナの同時起動
👉 つまり
PCに余裕があってもDocker側で制限されていることがあるのがポイントです。
【実録】実務で遭遇した「謎のビルド失敗」の正体#
以前、Next.jsのプロジェクトで node-canvas を含む重いライブラリを導入した際、npm install の途中で突然ビルドが停止し、エラーメッセージも出ずに終了するという現象に遭遇しました。
ローカルPC(MacBook Pro 32GBモデル)では余裕があるはずなのに、なぜかDockerコンテナ内だけで発生する。この原因が、**Docker Desktopのデフォルト設定(2GB)**によるメモリ不足でした。
ビルド時に大量のメモリを消費するライブラリを扱う場合、ホストPCのリソースがどれだけあっても、Docker側の「割り当て」を増やさない限り解決しません。
現在のメモリ使用状況を確認する#
まずは状況を確認しましょう。
docker stats表示例
CONTAINER ID NAME CPU % MEM USAGE / LIMIT
abc123 app 20% 500MiB / 1GiB👉 LIMIT が上限メモリです
Docker Desktop(Mac / Windows)でメモリを増やす方法#
Docker Desktopを使っている場合は、GUIから設定できます。

手順#
- Docker Desktopを開く
- Settings(設定)を開く
- Resources → Memory
- メモリを増やす(例:2GB → 4GB)
- Apply & Restart
👉 これでDocker全体のメモリ上限が増えます
docker runでメモリを増やす#
コンテナ単位で制限することも可能です。
docker run -m 2g nginxオプション#
-m:最大メモリ--memory-swap:スワップ含む上限
例
docker run -m 2g --memory-swap 3g nginxdocker-composeでメモリを増やす#
services:
app:
image: node
deploy:
resources:
limits:
memory: 2g👉 注意
deployはSwarm用- 通常のcomposeでは効かない場合あり
docker-compose(通常環境)での正しい設定#
services:
app:
image: node
mem_limit: 2g👉 こちらの方が実務ではよく使われます
Linux環境でメモリを増やす#
LinuxではDocker自体に制限はないことが多いですが、
cgroup制限がある場合#
cat /sys/fs/cgroup/memory.maxsystemdで制限されている場合#
sudo systemctl set-property docker.service MemoryMax=4Gよくある原因と対処法#
コンテナがOOMKilledになる#
OOMKilled原因
👉 メモリ不足
対策
- メモリを増やす
- 不要コンテナを停止
docker system pruneを実行
ビルドが途中で止まる#
原因
- node_modules
- 大量依存
対策
docker build --memory=4g .メモリ最適化のポイント#
不要コンテナを削除#
docker container pruneイメージ削除#
docker image prunesystem全体整理#
docker system prune注意点#
メモリを増やしすぎない#
👉 PC全体が重くなる
swapに頼りすぎない#
👉 パフォーマンス低下
FAQ#
メモリはどれくらい必要?#
目安:
- 軽量アプリ:1〜2GB
- Webアプリ:2〜4GB
- DB込み:4GB以上
なぜPCは余裕あるのに落ちる?#
👉 Docker側の制限が原因
まとめ#
Dockerのメモリ不足はよくある問題ですが、
- Docker Desktopで設定変更
- コンテナごとに制限調整
- 不要リソース削除
を行うことで解決できます。
👉 まずは「どこで制限されているか」を確認するのが重要です。










