本文へスキップ

ソリューション · コンテナ

Dockerに必要なサーバーのスペックは?

コンテナは 1 つのカーネルを共有するプロセスであり、小さな仮想マシンではありません。デーモンは約 100 MB を使い、それ以外はお客様自身のプロセスです。そのため答えは想像より小さくなります。プロキシ、アプリ、データベース、キャッシュを合わせて約 515 MB で、BD-8($12.90)に余裕をもって収まります。

コンテナが実際に使うもの

ベンチマークではなく目安の範囲

イメージ、構成、トラフィックによって、どの表よりも大きく変わります。ご自身のスタックで docker stats を実行してください。それがお客様に当てはまる唯一の数値です。

一般的なコンテナワークロードの常駐メモリの目安
コンテナ一般的なメモリBD-8(8 GB)に収まる数
リバースプロキシnginx、Caddy、Traefik15–60 MB129 上限付近
小規模な Web アプリNode、Python、Go(単一プロセス)60–200 MB38 上限付近
PostgreSQL または MySQL小規模なデータセット、デフォルトのプール200–500 MB15 上限付近
Redisキャッシュとして使用、maxmemory で上限設定20–200 MB38 上限付近
JVM サービスJava、Kotlin、Elasticsearch500–2000 MB3 上限付近

計算してみる

各プランに収まる数

メモリから OS 分の 300 MB とデーモン分の 100 MB を引き、コンテナが使う量で割ります。中央の列はスタック全体(プロキシ、アプリ、データベース、キャッシュ)で、約 515 MB です。

プランごとのコンテナとスタックの容量(ディスクと最新価格付き)
プランRAMスタック全体小規模なアプリディスク価格デプロイ
VPS-11 GB1325 GB$9.90デプロイ
BD-88 GB1538100 GB$12.90デプロイ
BD-1212 GB2359200 GB$17.90デプロイ
BD-2424 GB46120300 GB$31.90デプロイ

ディスクは 2 つ目の落とし穴で、後になって気づくものです。イメージ、ボリューム、ログは静かに蓄積します。急を要する事態になる前に、docker system prune を週次の cron に入れておいてください。

自社製品との比較

このサービスを購入すべきでない場合

マネージドコンテナプラットフォームは運用を代行するため高くなります。それは実際に買う価値のあるものです。

VPS では root 権限が得られる代わりに、更新、再起動、証明書、障害対応はお客様の担当になります。大幅に安くなりますが、手間は確実に増えます。その手間を負いたくないなら、マネージドプラットフォームが正直な答えです。パッチが当たっていないデーモンがインターネットにさらされたまま放置されるマシンを売るより、そちらをお勧めします。同じ趣旨の小さな助言が 2 つあります。すべてのコンテナにメモリ制限を設定し、問題のあるコンテナがデータベースの代わりに停止するようにしてください。また、1 台のマシンで Kubernetes を使わないでください。スケジュールする対象のないオーケストレーターは複雑さを増すだけです。

よくある質問

購入前によくある質問。

Docker 自体はどのくらいの RAM を使いますか?
ごくわずかで、ここが意外に思われる点です。Docker デーモンは約 100 MB を使い、それ以降のコンテナはただのプロセスです。2 つ目の OS も 2 つ目のカーネルもなく、仮想マシンのようなコンテナごとの固定コストもありません。計算は単純で、マシンのメモリから OS 分の約 300 MB とデーモン分の 100 MB を引き、実際に動かすプロセスで分け合います。
小規模な VPS でいくつのコンテナを動かせますか?
質問から想像するより多くなります。「コンテナ」はサイズの単位ではないからです。リバースプロキシ 10 個と Elasticsearch 1 つでは、まったく異なるマシンになります。BD-8(8 GB、$12.90)では、プロキシ、Web アプリ、データベース、キャッシュを合わせて約 515 MB となり、マシンの大部分が空いたままです。上の表で計算しています。実際に当てはまる数値は、ご自身のスタックで `docker stats` を実行して確認してください。
VPS はマネージドコンテナプラットフォームより安いですか?
価格ではほぼ必ず安くなりますが、比較はそれだけではありません。プラットフォームは運用を代行するため高くなります。更新、再起動、証明書、深夜 3 時の障害対応です。VPS では root 権限が得られ、それらすべてがお客様の担当になります。コンテナを動かしたく、その作業を引き受ける意思があるなら、VPS は大幅に安くなります。そうでないなら、プラットフォームにお金を払ってください。パッチの当たっていないデーモンが残ったまま放置されるマシンを売るより、そうお伝えします。
Docker Swarm や Kubernetes は必要ですか?
1 台のマシンなら不要です。単一サーバー上のスタックには Compose で十分で、セルフホスト構成の大多数にとって正しい答えです。オーケストレーターの役割は複数マシンにまたがるスケジューリングであり、1 台ではスケジュールするものがありません。Kubernetes は、実際に複数のマシンがあり、その複雑さに見合う理由があるときに使ってください。
最初に限界に達するのはメモリ、CPU、ディスクのどれですか?
通常はメモリで、派手に壊れます。カーネルの OOM キラーがプロセスを選んで終了させるため、コンテナが原因不明で再起動しているように見えます。コンテナごとにメモリ制限を設定し、データベースではなく問題のあるコンテナが停止するようにしてください。ディスクは 2 つ目の落とし穴です。イメージ、ボリューム、ログは静かに蓄積するため、急を要する事態になるずっと前から `docker system prune` を週次の cron に入れておくべきです。
ホストではどのイメージを使うべきですか?
どれでも構いません。すべてのプランですべてのイメージが動作し、Docker はそのすべてで動きます。特にこだわりがなければ Ubuntu LTS をお選びください。多くのコンテナのドキュメントがそれを前提としているためです。ディストリビューションの違いは思うほど重要ではありません。コンテナは独自のユーザーランドを持つため、ホストはカーネルとデーモン程度の役割しかありません。