docker を使用して、クライアントが 1 台のサーバー上で実行されている複数のアプリケーションにアクセスできるようにするにはどうすればよいでしょうか?

docker を使用して、クライアントが 1 台のサーバー上で実行されている複数のアプリケーションにアクセスできるようにするにはどうすればよいでしょうか?

200 GB の RAM を搭載し、非常に高速なサーバーがあるとします。基本的には、Web インターフェイスを介して実行される rserver のようなアプリケーションをホストしたいと考えています。

各アプリケーションを、一定数の CPU と RAM が割り当てられたコンテナーに入れたいと思います。各コンテナーは、各生徒用になります。

各生徒にポートをハードコーディングせずに、各生徒に使用する http アドレスを割り当てるにはどうすればよいでしょうか?

答え1

docker runCPU と RAM を割り当てるには、コンテナーを作成するときに (を参照docker help run)--cpuset-cpus=または のようなオプションがあります--memory=

学生ごとに異なる http アドレスを持つため、これは簡単なことではありません。コンテナ内で実行され、808x として公開されている 8080 ポート (コンテナ内) をリッスンする 8 つの Jenkins マスター サービスをホストする VM に対して行ったことは、443 のみをリッスンする Apache ディスパッチャ (または nginx) を構成し、8 つの DNS 名ごとに異なるコンテナにディスパッチすることです。システムについては、こちらをご覧ください。http://www.slideshare.net/cm13/scaling-your-jenkins-master-with-docker/16

このようなシステムを設定するには、各生徒に新しい名前を作成するためにDNSサーバー設定にアクセスする必要があります。また、Apache vhost設定の作成を自動化する必要があります(これはそれほど難しくありません)。次に、各生徒はhttps://彼の名前/アプリケーションが起動します。

docker-composeまたは他のテクノロジーを使用して、コンテナの作成も自動化することをお勧めします。

関連情報