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?
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
É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-machine
etc\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.
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.