web-dev-qa-db-fra.com

Docker Toolbox - L'hôte local ne fonctionne pas

J'utilise donc Docker Toolbox car je n'ai pas Hyper-V sur ma machine car ce n'est pas Windows 10 pro. Tout semble bien fonctionner, mais lorsque j'essaie d'utiliser mon navigateur, 0.0.0.0:80, il me renvoie toujours: ce site est inaccessible.

Mais lorsque j'exécute la commande: docker container ps, je reçois le texte suivant: 0.0.0.0:80->80/tcp, ce qui signifie que cette adresse doit fonctionner. J'ai cherché à travers les problèmes de stackoverflow et de github. Maintenant je suis coincé.

Est-ce que je manque quelque chose?

Merci Mark

MODIFIER:

Utiliser docker-machine ip default me renvoie 192.168.99.100. J'exécute cela sur le port 80. J'obtiens toujours le même résultat, sauf que l'adresse devient l'identifiant du conteneur: https://fd677edg12

J'exécute cette commande sur cmd pour trouver mon ipv4: cmd /k ipconfig /all. Mettez le résultat avec le port et il retournera la même chose: https://fd677edg12

64
Mark

Docker Toolbox n’offre pas autant de fonctionnalités que Docker pour Windows, mais son utilisation est correcte puisque vous utilisez l’édition Home.

Dans Toolbox, rien ne sera localhost ni 192.168.99.100 par défaut, car il exécute Linux VM dans VirtualBox.

Donc, si vous exécutez docker run -p 80:80 nginx

(remarquez que je devais publier un port pour que 192.168.99.100 puisse écouter sur ce port)

Ensuite, aller à http://192.168.99.100 devrait fonctionner.

120
Bret Fisher

Au début, j'avais quelques problèmes pour accéder à mes applications sur localhost: 8080 lors de l'utilisation de DockerToolBox et OracleVM VirtualBox.

Dans VirtualBox:

  1. Cliquez sur la machine appropriée (probablement celle nommée "par défaut")
  2. Paramètres
  3. Réseau> Adaptateur 1> Avancé> Transfert de port
  4. Cliquez sur "+" pour ajouter une nouvelle règle
  5. Définir le port hôte 8080 et le port invité 8080; veillez à laisser l'hôte IP et l'invité IP vides

Exécutez la commande:

docker run -p 8080:8080 ${image_id}
44
EJJ

Je suivais le tutoriel de docker pour windows dans https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell et je me suis retrouvé coincé à l'étape 6 lorsque vous testez nginx dans le navigateur Web. Il semble que j'ai rencontré un problème similaire puisque j'utilise également Windows Home et que je n'ai pas Hyper-V. Ma solution de contournement est assez simple:

  1. vérifier votre IP par défaut de docker

$ docker-machine ip default

192.168.99.100

  1. Accédez à la machine virtuelle Oracle pour définir le transfert de port. Assurez-vous que le paramètre réseau est NAT et ajoutez le transfert de port. Host IP: 127.0.0.1, Guest IP: 192.168.99.100, le port est défini sur 80 comme celui-ci

  2. Réessayez sur votre navigateur et exécutez http: // localhost ou http://127.0.0.1 (vous pouvez également ajouter le port 80). Il faut courir.

Le problème est que l'adresse IP de nginx est censée être accessible dans la machine virtuelle docker, de sorte que nous avons besoin de ce paramètre de transfert de port pour pouvoir y accéder directement dans le navigateur de la machine hôte.

30
nitya wijayanti

Vous pouvez utiliser localhost au lieu de '192.168.99.100' en suivant les instructions:

Étape # 01:

docker-machine ip default

Vous verrez l'adresse IP par défaut

Étape # 02:

docker-machine stop default

Étape # 03:

  1. Ouvrez VirtualBox Manager (dans les programmes de démarrage de Windows, recherchez VirtualBox Manager).
  2. Sélectionnez votre image Docker Machine VirtualBox (par exemple: par défaut).
  3. Ouvrez Paramètres -> Réseau -> Avancé -> Transfert de port
  4. Ajoutez le nom de votre application, le port de l'hôte souhaité et votre port invité i.e, app name : nginx, Host: 127.0.0.1, Host port: 80, guest port: 80

Etape 04: Vous êtes maintenant prêt à démarrer votre Docker Machine en exécutant les opérations suivantes:

docker-machine start default

Ensuite, démarrez simplement votre conteneur Docker et vous pourrez y accéder via localhost.

Regardez ici pour plus de détails.

3
Bablu Ahmed

Pour mapper les ports attendus sur localhost au lieu d'appuyer directement sur l'adresse IP de la machine à sous, vous pouvez utiliser la CLI de VirtualBox.

Si la machine à sous VM (appelée ici default) est en cours d'exécution, ajoutez et supprimez des règles comme celle-ci:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Si la VM ne fonctionne pas ou si vous souhaitez vous arrêter avant de la modifier:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

Où le format de la règle de transfert de port est [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

Notez que dans VirtualBox, vous souhaitez mapper le port de l'hôte de la carte Docker, et non le port du conteneur interne. Vous mappez hôte -> machine virtuelle, puis Docker mappe le conteneur VM ->.

Voir le docs VirtualBox .

0
James Irwin