Reputation: 11966
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.
Upvotes: 1
Views: 219
Reputation: 17261
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 docker-machine ls
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.
Upvotes: 1