web-dev-qa-db-ja.com

Windows 10(Docker for Windows)のコンテナーからdockerホストに接続する方法

Dockerコンテナーは、どのIPアドレスでDocker for Windows(Windows 10)上のホストに接続できますか?このIPアドレスはどのようにして見つけますか?

例:Windows 10マシンのポート1234で実行されているサービスがあります。コンテナ内のプログラムはこのサービスにアクセスする必要があります。プログラムはホストに接続するためにどのIPアドレスを使用する必要がありますか?

39
RemiX

短い答え:ほとんどの場合、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ファイアウォールがサービスとの通信を許可していることを確認してください。

63
RemiX

コンテナからホストに接続できるオプションの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で機能しています(確認済み)。

22
tomas.zigardi