2017-03-15 3 views
5

ウィンドウズ10周年記念版のドッカーウィンドウコンテナを実行していて、IISをコンテナのリバースプロキシとしてセットアップしようとしています。 https://blogs.technet.microsoft.com/virtualization/2016/05/25/windows-nat-winnat-capabilities-and-limitations/では、ローカルホストを使用して内部NAT範囲を参照することは不可能であるため、不可能であることが示唆されているようです。これによって、動的に割り当てられたIPアドレスが残されます。このIPアドレスは、イメージの実行後にdocker inspectコマンドを実行することによってのみ検出できます。より効率的な方法が見過ごされていることを願っています。ドッカーウィンドウコンテナへのリバースプロキシの定義方法

答えて

2

デフォルトのサブネット上のIPアドレスを各Windowsコンテナに割り当て、ポート80をコンテナからエクスポートすることでこの問題を解決しました。これにより、ARRリバースプロキシルールを導入するための安定したアドレスが得られました。たとえば、次の例では、アドレス172.20.118.129にコンテナを作成し、そのコンテナが要求されたアドレスで実行されていることを確認します。

PS C:\WINDOWS\system32> docker run -d --name myservice --ip=172.20.118.129 microsoft/iis:nanoserver 
7d20d8a131805727868ddf85f7c1f455fa2489bb2607b250e694a9e530a61302 
PS C:\WINDOWS\system32> docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" myservice 
172.20.118.129 
+0

あなたのソリューションは実稼働環境にも適していると思いますか?どのようにARRを設定しましたか?ありがとう –

1

また、当社のコンテナの固定IPアドレスを使用しますが、我々は、リバースプロキシを行うにはnginxで別のコンテナを使用。コンテナホスト(Windows Server 2016)ではDockerだけをインストールし、それ以外はインストールしないという考えがあります。すべての設定はコンテナで行われます。このようにして、別のホストに簡単に移行できます。

これはnginx.confnginx設定フォルダにコピーされていることをDockerfile nginxのプロキシの

FROM microsoft/windowsservercore 

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] 

ARG NgInxVersion="1.13.5" 
ENV NgInxZipUrl="http://nginx.org/download/nginx-${NgInxVersion}.zip" 

RUN Invoke-WebRequest -Uri $env:NgInxZipUrl -UseBasicParsing -Outfile c:\\nginx.zip 
RUN Expand-Archive -Path c:\\nginx.zip -DestinationPath c:\\nginx 

WORKDIR "c:\\nginx\\nginx-${NgInxVersion}" 

COPY ./nginx.conf conf\\nginx.conf 

ENTRYPOINT powershell .\\nginx.exe 

お知らせです。リバースプロキシ設定が含まれています。私たちのサイトのいずれかのためにhttpノードから抽出します。我々は新しいコンテナーを追加すると

server { 
    listen  80; 
    server_name somesite.mydomain.com; 

    location/{ 
     proxy_pass http://172.22.108.6/; 
    } 
} 

nginxコンテナは、我々はnginx.confを更新し、nginxのをリロードするPowerShellスクリプトを実行し-p 80:80

で実行する必要があります。 (これはまれになります)

例:

  1. ユーザーは、ポート80がnginxのにさらされているので、私たちのDNSは、当社のコンテナホスト
  2. のIPにsomesite.mydomain.comをリダイレクトhttp://somesite.mydomain.com
  3. を閲覧コンテナ、リクエストはそこに行く
  4. nginxはリクエストを代理します172.22.108.6
  5. ユーザはipのコンテナで実行中のウェブページを見ています
+0

また、IISとARRを持つコンテナを作成してnginxを置き換えることもできます(ここでのガイドはhttps://chris.59north.com/post/Combining-Windows-Server-2016-Container-ASPNET-5-and-Application-Request)。 -Routing-(ARR)-using-Docker)。しかし、私はnginxがより軽量でセットアップが容易であることを発見しました。 – Rubanov

関連する問題