2016-11-22 1 views
13

Mit welcher IP-Adresse kann ein Andock-Container mit seinem Host auf Docker für Windows (unter Windows 10) verbunden werden? Wie finden Sie diese IP-Adresse?So stellen Sie eine Verbindung zum Andock-Host aus einem Container unter Windows 10 her (Docker für Windows)

Beispiel: Sie haben auf Ihrem Windows 10-Computer einen Dienst auf Port 1234 ausgeführt. Ein Programm in Ihrem Container muss auf diesen Dienst zugreifen. Welche IP-Adresse sollte das Programm für die Verbindung zum Host verwenden?

+0

In einigen Fällen ist es ** 10.0.0.2 ** – nwinkler

+0

Hallo, Ihr Container ist Windows oder Linux? –

Antwort

23

Kurze Antwort: In den meisten Fällen benötigen Sie 10.0.75.1.

In Docker für Windows kommuniziert der Container über einen vEthernet-Adapter namens DockerNAT. Um die Details, öffnen Sie die Eingabeaufforderung zu finden und

ipconfig 

Geben Sie für einen Eintrag eingeben, die

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 . . . . . . . . . : 

Die IP-Adresse rechts von IPv4 Address ist, die Sie benötigen, wie

aussieht.

Hinweis: Stellen Sie sicher, dass der Dienst Verbindungen von außerhalb Ihres Hosts zulässt. Was diesen Dienst betrifft, ist Ihr Andock-Container eine andere Maschine. Stellen Sie außerdem sicher, dass die Windows-Firewall die Kommunikation mit dem Dienst ermöglicht.

+1

können Sie erweitern, wie Sie Verbindungen von außerhalb Ihres Hosts zulassen? – PeterE

+0

Dies hängt von dem Dienst ab, zu dem Sie eine Verbindung herstellen möchten. Die meisten Dienste verfügen über eine Konfigurationsdatei, in der Sie eine IP (Bereich) angeben können, die eine Verbindung zu Ihrem Dienst herstellen darf. – RemiX

+1

Was ist, wenn ich die IP dynamisch erhalten möchte, zum Beispiel nach Domain Name (Ping Host)? Ich versuche, meine App in Azure bereitzustellen (Windows Server 2016 mit Containern), die nicht 10.0.75.1 erhält. –

7

Eine der Optionen, die Sie aus dem Behälter zu verbinden, ermöglicht es, Gastgeber ist der Container mit dem Parameter laufen

--net="host"

Beispiel: aus dem Behälter,

docker run -it --net="host" container_name 

Dann können Sie eine Verbindung zu Service am Host mit:

localhost:port

In diesem Fall können Sie jedoch keine weiteren Container mit dem Parameter --link verknüpfen.

Mehr zu diesem Thema: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-host.html

+0

Wie ich von meinen Versuchen und [diese Antwort] verstehe (http://stackoverflow.com/questions/35586778/docker-container-doesnt-expose-ports-whenn-net-host-is-sited-in-the-docker), '--net =" host "' aktiviert kein Port Mapping (zB Port 80 bis 8000) und kann Konflikte zwischen Portnummern auf dem Host und denen im Docker Container verursachen (zB wenn sowohl der Host als auch der Container Apache haben) läuft auf Port 80). – RemiX

+4

Ihre Antwort funktioniert nicht für Windows und Mac atm. '--net =" Host "' funktioniert nur für Linux. Auf dem Mac können Sie auf den Host-Rechner mit dem Namen 'docker.for.mac.localhost' zugreifen, unter Windows gibt es keinen solchen Namen und Sie können die Bridge-IP-Adresse mit' ipconfig' erhalten – Derp

Verwandte Themen