Docker を VPS で動かす場合の必要スペック
公開: 2026-05-17 · 更新: 2026-05-26 · ServerCost 編集部
Docker / Docker Compose を VPS で動かすとき、迷いやすいのは「メモリ何 GB から始めるか」「ストレージはどれくらい必要か」です。 本記事では、Web アプリ・DB・ワーカーを VPS 上で動かす前提で、用途別のスペック目安と運用上の注意点を整理します。
先に結論: 本番は 2〜4GB から
開発検証だけなら 1GB でも動きますが、Web アプリと DB を同居させる本番では 2GB が下限、4GB が安心ラインです。 8GB 以上は、複数アプリ・ワーカー・DB・監視を同じ VPS にまとめる場合の選択肢です。
Docker そのものよりも、コンテナ内のアプリ、DB、ログ、ビルドキャッシュ、ボリュームがリソースを消費します。 VPS 選びではメモリだけでなく、SSD 容量と I/O 性能も同じくらい重要です。
Docker 自体の消費は意外と小さい
Docker daemon(dockerd)+ containerd のメモリ消費は、何もコンテナを動かしていない状態で 100〜200MB 程度。 つまりメモリ消費の大半はコンテナ内のアプリ次第です。
公式ドキュメントでも、Docker は未使用のイメージ・コンテナ・ネットワーク・ビルドキャッシュを自動削除せず、 明示的に prune する設計です。ストレージはイメージとキャッシュで増えやすく、 Node.js + Python + Postgres のような構成では数 GB 単位で消費します。 開発用 VPS では 50GB SSD 以上を選ぶのが安全です。
用途別の推奨スペック
| 用途 | メモリ | vCPU | SSD |
|---|---|---|---|
| 開発検証(1-2 コンテナ) | 1 GB | 1 | 30 GB |
| 小規模 LEMP(Web + DB) | 2 GB | 1-2 | 50 GB |
| 複数アプリ同居(5-8 コンテナ) | 4 GB | 2 | 100 GB |
| 本番マルチサービス(10-15 コンテナ) | 8 GB | 2-4 | 160 GB |
| Docker Swarm / kind / 軽量 K8s | 16 GB+ | 4-6 | 320 GB+ |
1GB は「1 コンテナだけ」「DB は外部」「ビルドはローカルまたは CI」という条件なら選べます。 DB も含めて VPS 内に置くなら、2GB 未満は OOM Kill やスワップ多発のリスクが高くなります。
構成パターン別の考え方
- Web + DB: アプリ 1 台、PostgreSQL / MySQL 1 台なら 2GB から。DB キャッシュを考えると 4GB が扱いやすい。
- Web + DB + worker: キュー処理や画像変換を同居させるなら 4GB 以上。CPU も 2 vCPU 以上を選ぶ。
- 複数アプリ同居: アプリごとにログ・イメージ・DB ボリュームが増えるため、8GB / 160GB SSD 以上を基準にする。
- CI ビルドも VPS 内で実行: ビルド時に一時的なメモリとストレージを使うため、通常運用より 1 ランク上を選ぶ。
ストレージ容量が肝(特にイメージ)
Docker イメージはレイヤー共有されますが、古いイメージ、停止済みコンテナ、ビルドキャッシュを放置すると簡単に容量を使います。 WordPress / DB のボリュームも含めると、本番用なら 100GB 以上を見ておくと運用に余裕が出ます。
Docker 公式ドキュメントでは、未使用リソースの削除に docker image prune、docker container prune、docker system prune などのコマンドが用意されています。ボリュームはデータ消失につながるため、削除対象を確認してから実行します。
docker system df
docker system prune --filter "until=168h"NVMe SSD 対応の事業者(Hetzner Cloud / Vultr / Linode など)を選ぶと、起動・ビルド・DB クエリの待ち時間を減らしやすくなります。
メモリが足りないなら swap を作る
VPS は標準で swap が無効化されているケースがあります。1〜2GB の swap を有効にしておくと OOM Kill の確率を下げられます。 ただし swap はメモリ不足を根本解決するものではなく、性能は落ちます。頻繁に swap するなら上位プランへ移行します。
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab本番運用で見るべき指標
docker stats: コンテナ別の CPU / メモリ使用量docker system df: イメージ・コンテナ・ボリューム・ビルドキャッシュの容量df -h: ルートディスクとボリュームの空き容量journalctl: systemd 管理アプリや Docker daemon のログ- DB のバックアップサイズと復元時間
ディスク使用率が 80% を超えた状態で放置すると、DB 書き込み失敗やログ出力失敗で障害につながります。 監視は CPU よりも、まずメモリ・ディスク・HTTP 死活から入れるのが実用的です。
Docker ボリュームのバックアップ
Docker Compose で DB やアップロードファイルを扱う場合、重要なのはコンテナではなくボリュームです。 アプリイメージは再ビルドできますが、DB ボリュームとユーザーアップロードは失うと復旧できません。
- DB は
pg_dump/mysqldumpなど論理バックアップを取る - アップロードファイルは rsync または S3 互換ストレージへ退避する
- VPS 側のスナップショットだけに依存しない
- バックアップから別環境に復元できるか確認する
Docker と相性の良いサービス事業者
- Hetzner Cloud CPX: dedicated CPU + NVMe SSD の低価格帯候補
- Vultr High Performance / High Frequency: NVMe SSD、高クロック
- DigitalOcean Premium Intel / AMD: NVMe SSD 標準
- Contabo VPS: 大容量メモリを低価格で見たい場合の比較対象
- ConoHa VPS: 国内、時間課金で検証に便利
- Linode: Tokyo リージョンあり
参考にした公式情報
関連: 主要 Provider の料金プラン一覧
執筆: ServerCost 編集部 / 監修: 庄司 育雄
公式ページで確認できる情報だけを根拠にし、確認できない数値は推測で補完しません。
よくある質問
Q.Docker を動かすだけなら 1GB VPS で足りますか?
検証用に軽いコンテナを 1〜2 個動かすだけなら足りることがあります。ただし DB、ビルド、ログ、監視を同居させるとすぐ余裕がなくなります。本番で Web アプリと DB を動かすなら 2GB を下限、4GB を安心ラインにします。
Q.Docker 用 VPS でストレージはどれくらい必要ですか?
開発検証なら 30GB でも始められますが、本番では 50GB 以上を基準にします。イメージ、ビルドキャッシュ、停止済みコンテナ、DB ボリューム、ログが積み上がるためです。複数アプリ同居なら 100GB 以上が扱いやすいです。
Q.Docker Compose と VPS は相性がよいですか?
小〜中規模の自己運用では相性が良いです。app、db、worker、reverse-proxy を 1 台で管理でき、構成をファイルに残せます。一方、DB まで同居させる場合は単一障害点になるため、バックアップと復元確認を運用に組み込みます。
Q.Docker の prune は自動実行してよいですか?
未使用イメージやビルドキャッシュの整理には有効ですが、ボリューム削除はデータ消失につながります。自動化する場合は `docker system df` で増加傾向を確認し、ボリュームを削除対象に含めない設定から始めるのが安全です。
Docker 用 VPS を試算
メモリだけでなく、SSD 容量とバックアップの有無も合わせて比較してください。 Docker 本番運用では、安い 1GB よりも 2GB / 50GB 以上の方が結果的に安定しやすいです。