0

Docker Desktop for Windowsを使用しています( Docker Toolkit for Windows ではなく、Hyper-Vを使用しています)。私が達成したいのは、同じポート セットを使用して、3 つ以上の Docker コンテナーを起動することです。

最初の docker コンテナーを作成した後、http://docker:8091(またはhttp://10.0.75.2:8091) 利用可能なコンテナーがあり、それで問題ありません。今、私がやりたいことは、同じポート番号が利用可能な別のコンテナーを起動することです。つまり、http://docker2:8091、またはhttp://10.0.75.3:8091) のようなものです。そして、docker3 または*.4:8091.

(公開されたポートを別のランダムなポートに再割り当てして 3 つのコンテナーを起動するのは簡単なことですが、ポート番号は保持したいと思います)。

Hyper-V マネージャーを介してネットワーク アダプターを MobyLinuxVM に追加しようとしましたが、Docker が壊れているようで、再インストールして再度動作させる必要があります。

docker-machine ( docker-machine create -d hyperv --hyperv-virtual-switdch DockerNAT AnotherBox) を使用して別の Hyper-V インスタンスをスピンアップしようとしましたが、途中でロックアップして機能しません。(フォーラムで読んだ内容に基づくと、Docker for Windows での docker-machine の意図は、とにかくこれを実行できるようにすることではなく、クラウドで VM を管理することだけです)。

だから...私がやろうとしていることを達成する方法はありますか?

4

2 に答える 2

1

はい、リバース プロキシを使用する方法があります。コンテナー内で Nginx または HAProxy を使用するか、より簡単に、コンテナーを逆プロキシするように自動的に再構成する Nginx イメージを使用できます: https://hub.docker.com/r/jwilder/nginx-proxy/

于 2016-06-27T19:30:43.573 に答える
1

ポートを公開するために、docker はバイナリの docker-proxy を使用してコンテナーに転送します。効果的には次のようになります。

docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091

この例では明らかにすべてのインターフェイスにバインドされていますが、特定のインターフェイスにバインドすることも可能だと思います。

ホストに 3 つのインターフェイスがあり、適切な DNS レコードがあると仮定すると、次のようにすることが可能です。

docker-proxy -proto tcp -host-ip 10.0.75.2 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091
docker-proxy -proto tcp -host-ip 10.0.75.3 -host-port 8091 -container-ip 172.17.0.3 -container-port 8091
docker-proxy -proto tcp -host-ip 10.0.75.4 -host-port 8091 -container-ip 172.17.0.4 -container-port 8091
于 2016-11-18T08:40:57.487 に答える