docker コンテナーを使用するベスト プラクティスが何であるかはわかりません。VM、たとえばubuntuを使用してWebアプリケーションを実行する場合、データベース、Webサービスなど、アプリケーションを実行するために必要なすべてのソフトウェアをインストールし、スタンドアロンのオペレーティングシステムのように使用します。
ただし、Docker は別の方法で使用できます。
Web アプリケーションを実行するシナリオを考えると、次の 2 つのオプションがあります。
すべてのソフトウェアを 1 つのコンテナーにインストールします。データベース、Java、および実行に必要なその他すべてのソフトウェアをインストールします (つまり、VM を使用するのと同じように使用します)。
各アプリケーションを個別のコンテナーにインストールします。データベースを 1 つのコンテナーに、Web サービスを別のコンテナーに配置し、それらを相互に通信させます。
オプション 1) は、フルスタックのアプリケーションを展開する方が簡単に思えますが、パッケージ間の依存関係の複雑さの問題や、各ソフトウェアへの OS リソースの割り当てがある場合、スケーリングが難しくなる可能性があります。
オプション 2) はデプロイが難しいように見えますが、各コンテナーはあまり苦労せずにアップグレードできます。
Docker ユーザーの間で一般的な慣行は何ですか?
編集:これに対する回答はhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-containerにも記載されています