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
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.
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:
8080
et le port invité 8080
; veillez à laisser l'hôte IP et l'invité IP videsExécutez la commande:
docker run -p 8080:8080 ${image_id}
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:
$ docker-machine ip default
192.168.99.100
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
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.
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:
VirtualBox Manager
).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.
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 .