Dockerコンテナーは、どのIPアドレスでDocker for Windows(Windows 10)上のホストに接続できますか?このIPアドレスはどのようにして見つけますか?
例:Windows 10マシンのポート1234で実行されているサービスがあります。コンテナ内のプログラムはこのサービスにアクセスする必要があります。プログラムはホストに接続するためにどのIPアドレスを使用する必要がありますか?
短い答え:ほとんどの場合、10.0.75.1が必要です。
Docker for Windowsでは、コンテナーはDockerNATと呼ばれるvEthernetアダプターを介して通信します。詳細を確認するには、コマンドプロンプトを開いて入力します
ipconfig
次のようなエントリを探します
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::fd29:297:4583:3ad4%4
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
IPv4 Address
の右側のIPアドレスが必要です。
注:サービスがホスト外部からの接続を許可していることを確認してください。そのサービスに関する限り、Dockerコンテナは別のマシンです。また、Windowsファイアウォールがサービスとの通信を許可していることを確認してください。
コンテナからホストに接続できるオプションの1つは、パラメータを使用してコンテナを実行することです
--net="Host"
例:
docker run -it --net="Host" container_name
次に、コンテナから、次を使用してホスト上のサービスに接続できます。
localhost:port
ただし、この場合、--link
パラメーターを使用してそれ以上のコンテナーをリンクすることはできません。
このトピックの詳細: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-Host.html
UPDATE:
バージョン18.03から、ホストが使用する内部IPアドレスに解決されるDNS名Host.docker.internal
を使用できます。
詳細: https://docs.docker.com/docker-for-windows/networking/
古いバージョンでは、ホストで実行コマンドipconfigを取得するIPアドレスを使用して、ホストWindowsで実行されているサービスに接続できます->イーサネットアダプター-> IPv4アドレス
UPDATE以下のDatzコメントによると、docker.for.win.localhost
はDocker for Windowsで機能しています(確認済み)。