Se connecter à docker-machine en utilisant "localhost"

il y a certaines fonctionnalités, comme JavaScript service workers sans https, qui ne fonctionnent que sur localhost, mais quand je lance mon application dans un conteneur docker, en utilisant docker-compose, qui fonctionne sur docker-machine, j'ai besoin de me connecter à l'aide de l'adresse que j'obtiens de

docker-machine ip default

y a - t-il un moyen de cartographier localhost à cette ip?

12
demandé sur bigblind 2016-02-13 00:22:37

3 réponses

vous pouvez ajouter un port VirtualBox forward pour mapper un port sur l'hôte docker de votre machine locale.

en supposant que votre machine docker est appelée "default" et que vous voulez mapper le port 80 dans votre conteneur vers localhost: 8888 vous pouvez lancer:

vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"

ou si la machine virtuelle est en cours d'exécution

vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"

cela peut aussi être fait dans L'interface de gestion VirtualBox dans les paramètres de la VM. Voici le doc de VirtualBox https://www.virtualbox.org/manual/ch06.html#network_nat

vous aurez également besoin de cartographier le port sur votre conteneur vers le port sur la machine docker, vous faites cela lorsque vous démarrez le conteneur (cela suppose également que vous avez une commande" EXPOSE 80 " dans votre fichier Dockerfile

docker run -p 80:80 mycontainer

https://docs.docker.com/engine/reference/run/

voir Aussi: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

24
répondu Kristofor Carle 2016-08-27 05:57:08

Édition hosts fichier provoque que votre machine locale ne regarde directement à l'adresse IP spécifiée pour un domaine. Ainsi, vous pouvez ajouter l'adresse ip du docker-machineetc\hosts file dans votre machine locale et mappez le port 80 sur votre container au port 80 sur le docker-machine.

Exemple:

1) Obtenez un menu fixe adresse ip de l'hôte

$ docker-machine ip default
192.168.99.100

2) Ajouter cette ligne à etc/hosts le fichier dans votre ordinateur local

192.168.99.100 domain.com

3) Vérifiez que votre machine résout le domaine.

$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms

Notes:

  • pour les utilisateurs Windows, le fichier hosts est localisé à C:\Windows\System32\Drivers\etc\hosts
  • si vous voulez prendre en charge plusieurs domaines dans une seule docker-machine, vous pouvez créer un conteneur proxy avec nginx à l'intérieur devant vos autres conteneurs.
14
répondu Hemerson Varela 2016-02-15 16:14:46

la manière la plus simple est de faire un renvoi de port à partir de la VBox

Paramètres->Réseau->Adaptateur 1 - >Redirection Du Port

puis ajouter le nom, dans l'hôte ajouter 127.0.0.1 (pour l'hôte local) puis les fixations de port appropriées et redémarrer la VM.

enter image description here

5
répondu Xelian 2018-02-18 16:25:53