web-dev-qa-db-fra.com

Accès à la machine hôte en tant qu'hôte local à partir d'un conteneur Docker qui se trouve également dans une VM boot2docker

Supposons que j'ai un serveur fonctionnant sur le port 8000 sous OSX. Comment mon conteneur Docker peut-il y accéder via localhost:8000? Je ne peux pas non plus changer le nom d'hôte car l'application dans le conteneur n'est pas sous mon contrôle.

J'ai lu cette discussion précédente sur l'utilisation de --net="Host" pour qu'un conteneur accède au réseau de la machine hôte. Cependant, je suis sur OSX et Docker s'exécute dans un VM donc localhost du conteneur Docker avec --net="Host" va à la VM et non ma vraie machine.

Ensuite, j'ai essayé solution de contournement de redirection de port comme ceci: VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000"; en vain.

Toute suggestion serait grandement appréciée.

35
Paul Lam

Grâce à la réponse de palimpestor, je l'ai compris:

Au lieu de --net="Host", utilisation --add-Host="localhost:10.0.2.2"

Effectivement:

  • 10.0.2.2 est la passerelle par défaut définie pour l'interface réseau invité en NAT ( référence ).
    Lire: c'est votre hôte, vu depuis boot2docker.
  • --add-Host... ajoute localhost 10.0.2.2 dans/etc/hosts ( référence )

Remarque: vous devez avoir configuré un adaptateur NAT dans votre boot2docker VM VirtualBox (je l'ai fait via l'interface graphique, je ne connais pas la CLI) .

47
lajarre

Au lieu de courir avec --net="Host", essayez --add-Host="localhost:192.168.59.3", qui est l'IP de l'hôte boot2docker.

14
palimpsestor