2017-01-11 1 views
0

Je tente d'exécuter mon API Web ASP.NET Core 1.1 dans un conteneur Docker, mais je ne peux pas me connecter à l'API Web à partir d'un navigateur ou curl. Pour résoudre ce problème, j'ai également apporté des conteneurs nginx et Apache httpd standard et je ne peux pas me connecter à ceux-ci, donc je crois que c'est un problème de configuration Docker/Docker Toolbox plutôt qu'un problème avec mon application.Comment me connecter à un conteneur hébergé dans Docker Toolbox?

Je vais me concentrer sur ce que je l'ai fait avec nginx et Apache:

Je suis en cours d'exécution Docker Boîte à outils sur Windows 7 Professional, et tout semble fonctionner comme je l'attendre.

  • Docker commandes tous les travaux comme prévu
  • je peux accéder au système de fichiers Windows sous-jacent
  • je peux obtenir les résultats attendus de curl http://localhost (si je commence le site Web IIS par défaut sur Windows 7)

Alors maintenant, je fermer IIS et exécuter nginx dans un conteneur:

$ docker run -d -p 80:80 nginx 
45bb1f373c11b820d8431de3eb3bf222d57d412de53e8625f461b62c4279e644 

Docker maintenant sho ws nginx fonctionnement:

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS       NAMES 
45bb1f373c11  nginx    "nginx -g 'daemon off" 47 seconds ago  Up 48 seconds  0.0.0.0:80->80/tcp, 443/tcp admiring_pike 

Mais je ne peux pas se connecter soit avec curl (au sein de l'invite de commande Boîte à outils Docker) ou d'un navigateur Web dans Windows:

$ curl http://localhost 
curl: (7) Failed to connect to localhost port 80: Connection refused 

je reçois exactement les mêmes résultats si je lance un Apache 2.4 (httpd) conteneur.

Des idées? Merci! Peter

Répondre

1

J'ai trouvé la réponse dans une autre question here. Étant donné que Docker Toolbox est exécuté sur une machine virtuelle Linux légère, il possède sa propre adresse IP. Il est nécessaire de mapper localhost à la machine virtuelle en utilisant DOCKER_HOST pour accéder à la machine virtuelle via son adresse IP, à l'aide de la commande:

docker-machine ip default