How do I connect to a container hosted in Docker Toolbox?

家住魔仙堡 提交于 2019-12-01 12:07:17

问题


I am attempting to run my ASP.NET Core 1.1 web API in a Docker container, but I cannot connect to the web API from a browser or curl. To troubleshoot, I have also brought up standard nginx and Apache httpd containers and cannot connect to these either, so I believe this is a Docker/Docker Toolbox/configuration issue rather than a problem with my application.

I'll focus on what I have done with nginx and Apache:

I am running Docker Toolbox on Windows 7 Professional, and everything seems to work as I would expect.

  • Docker commands all work as expected
  • I can access the underlying Windows filesystem
  • I can get the expected results from curl http://localhost (if I start the default IIS website on Windows 7)

So now I shut down IIS and run nginx in a container:

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

Docker now shows nginx running:

$ 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

But I cannot connect with either curl (within the Docker Toolbox command prompt) or a web browser in Windows:

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

I get exactly the same results if I run an Apache 2.4 (httpd) container.

Any ideas? Thanks! Peter


回答1:


I have found the answer in another question here.

Because Docker Toolbox is running on a lightweight Linux VM, it has its own IP address. One needs either to map localhost to the VM using DOCKER_HOST ir access the VM via it's IP address, found using the command:

docker-machine ip default



回答2:


As you are running on VM, you need to follow this docker document from here.

After that run the following command to check the IP address of your VM.

docker-machine ip default

Start the nginx and hit [ip default address]:port in the browser. It works!



来源:https://stackoverflow.com/questions/41585710/how-do-i-connect-to-a-container-hosted-in-docker-toolbox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!