À quelle adresse IP un conteneur Docker peut-il se connecter à son hôte sous Docker pour Windows (sous Windows 10)? Comment trouvez-vous cette adresse IP?
Exemple: un service est exécuté sur le port 1234 sur votre ordinateur Windows 10. Un programme dans votre conteneur doit accéder à ce service. Quelle adresse IP le programme doit-il utiliser pour se connecter à l'hôte?
Réponse courte: dans la plupart des cas, vous aurez besoin de 10.0.75.1.
Dans Docker pour Windows, le conteneur communique via un adaptateur vEthernet appelé DockerNAT. Pour trouver ses détails, ouvrez l'invite de commande et tapez
ipconfig
Recherchez une entrée qui ressemble à
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 . . . . . . . . . :
L'adresse IP à droite de IPv4 Address
est celui dont vous avez besoin.
Remarque: assurez-vous que le service autorise les connexions externes à votre hôte. En ce qui concerne ce service, votre conteneur docker est une machine différente. Assurez-vous également que le Pare-feu Windows autorise la communication vers et depuis le service.
Une des options qui vous permet de vous connecter de conteneur à hôte est d’exécuter votre conteneur avec le paramètre
--net="Host"
Exemple:
docker run -it --net="Host" container_name
Ensuite, depuis un conteneur, vous pouvez vous connecter au service sur l'hôte en utilisant:
localhost:port
Mais dans ce cas, vous ne pourrez pas lier davantage de conteneurs à l'aide de --link
paramètre.
Plus sur ce sujet: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-Host.html
[~ # ~] met à jour [~ # ~] :
A partir de la version 18.03 , vous pouvez utiliser le nom DNS Host.docker.internal
, qui résout l'adresse IP interne utilisée par l'hôte.
Plus: https://docs.docker.com/docker-for-windows/networking/
Sur les anciennes versions, vous pouvez vous connecter au service exécuté sur l'hôte Windows à l'aide de l'adresse IP utilisée pour exécuter la commande ipconfig sur l'hôte -> adaptateur Ethernet -> adresse IPv4.
[~ # ~] met à jour [~ # ~] Selon le commentaire Datz ci-dessous, docker.for.win.localhost
fonctionne dans Docker pour Windows (confirmé).