他人が私よりもうまく答える方法を知っているかもしれないという厄介な疑問。しかしここにそれは行く。
のは、マルチテナント(source)のこの定義を見てみましょう:
マルチテナントは、ソフトウェア・アプリケーションの単一のインスタンスを複数の顧客にサービスを提供するアーキテクチャです。
この定義にDockerを配置するのは本当に難しいです。インスタンスとアプリケーションの両方であると主張することができます。それが混乱の原因です。 デーモン、コンテナとアプリケーション:
は、3つの異なる部分にドッカーを破るのをしてみましょう。
デーモンは、ホストにインストールされ、Docker コンテナを実行します。デーモンは実際には同じシステム上の私の多くのユーザーが使用できるので、マルチテナントをサポートしています。それぞれのユーザーは~/.docker
に独自の構成を持っています。我々はアプリケーションと呼びます単一のプロセスを、実行
ドッカーコンテナ。
アプリケーションは何でもかまいません。この例では、Docker コンテナがフォーラムなどのWebアプリケーションを実行しているとします。このフォーラムでは、ユーザーは自分の名前でサインインして投稿することができます。 シングルインスタンスで、複数の顧客にサービスを提供しています。したがって、マルチテナントをサポートします。
私たちがスキップしたのはコンテナで、マルチテナントをサポートしているかどうかは疑問です。そして、これはあなたの質問に対する答えがあると私が思うところです。
Dockerコンテナが仮想マシンではないことに注意してください。docker run [IMAGE]
を使用すると、新しいコンテナインスタンスが作成されます。これらのインスタンスは一過性で不変です。彼らは単一のプロセスを実行し、プロセスが存在するとすぐに終了します。しかし、複数のユーザーがそれらに接続してコマンドを同時に実行するようには設計されていません。これがマルチテナントとなるでしょう。代わりに、Dockerコンテナはプロセスの単なる実行環境です。
概念的には、echo Hello
とdocker run echo Hello
はこの例では同じものです。彼らはどちらも新しい実行環境(プロセス対コンテナ)でコマンドを実行し、いずれもマルチテナントをサポートしていません。
この回答が読めて、あなたの質問に答えることを願っています。私が明らかにしなければならない部分があれば教えてください。