4

docker コンテナーを使用するベスト プラクティスが何であるかはわかりません。VM、たとえばubuntuを使用してWebアプリケーションを実行する場合、データベース、Webサービスなど、アプリケーションを実行するために必要なすべてのソフトウェアをインストールし、スタンドアロンのオペレーティングシステムのように使用します。

ただし、Docker は別の方法で使用できます。

Web アプリケーションを実行するシナリオを考えると、次の 2 つのオプションがあります。

  1. すべてのソフトウェアを 1 つのコンテナーにインストールします。データベース、Java、および実行に必要なその他すべてのソフトウェアをインストールします (つまり、VM を使用するのと同じように使用します)。

  2. 各アプリケーションを個別のコンテナーにインストールします。データベースを 1 つのコンテナーに、Web サービスを別のコンテナーに配置し、それらを相互に通信させます。

オプション 1) は、フルスタックのアプリケーションを展開する方が簡単に思えますが、パッケージ間の依存関係の複雑さの問題や、各ソフトウェアへの OS リソースの割り当てがある場合、スケーリングが難しくなる可能性があります。

オプション 2) はデプロイが難しいように見えますが、各コンテナーはあまり苦労せずにアップグレードできます。

Docker ユーザーの間で一般的な慣行は何ですか?

編集:これに対する回答はhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-containerにも記載されています

4

1 に答える 1

5

最良の方法は、サービス (アプリケーション) ごとに個別のコンテナーを使用することです。このようにして、各サービスを他のコンテナから独立してアップグレード/変更できます。Docker は、マイクロ サービス アーキテクチャに非常に適しています。

1 つのコマンドだけですべてのコンテナーを実行するには、Docker Composeを使用しますdocker-compose up。Docker Compose では、コンテナー間の依存関係を定義できます。したがって、それらは自動的に接続されます。

すべてのコンテナーを個別の Linux ホストで実行したい場合は、Docker Swarmを使用して、ネットワークを気にする必要がないようにすることができます。

于 2016-10-02T00:12:49.017 に答える