docker: port mapping not working on non default machine
When playing with
docker I discovered something strange (at least to me). I created a container by:
docker run -p 8080:80 nginx
And no matter what I try. I couldn’t see anything from
http://localhost:8080. Finally I figured out that I did
eval $(docker-machine env foo)
and switched to a different machine. When switching back to the default machine, the HTTP server works fine again.
Could somebody explain why this is?
I’m using Docker for Mac 1.12.
One Solution collect form web for “docker: port mapping not working on non default machine”
I can guess from your info that you’re using Docker toolbox (with VirtualBox probably). Docker toolbox creates a linux host (based on the boot2docker image) and runs your nginx container inside that host. the
-p 8080:80 will export port 80 in nginx to 8080 on the host. So to access it from your computer, you need to use http://HOST-IP-ADDRESS:8080.
You can find your host IP by using
An alternative to Docker toolbox is to use Docker for Mac or Docker for Windows (google them). These remove the need for VirtualBox. Your computer essentially becomes the host for running docker containers. In that case, running
http://localhost:8080 would give your your nginx server.