I just installed Docker with Docker-Toolbox on my Mac using homebrew: install docker with homebrew
After creating and configuring a Container with Rails, Postgres and starting docker-compose up everything looks fine but i can't access the webserver from host.
The output of
$ docker-compose up
dummy_1 | I, [2016-03-30T14:55:53.130639 #6] INFO -- : listening on addr=0.0.0.0:8000 fd=10
When i type in Google Chrome the url http://0.0.0.0:8000/ i get
This site can’t be reached
0.0.0.0 refused to connect.
ERR_CONNECTION_REFUSED
So i tried
$ docker-machine env dummy
with the following output:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy"
export DOCKER_MACHINE_NAME="dummy"
When i try in Chrome http://192.168.99.100:2376
i get a blank file downloaded. Why is it so? I expect the default greeting page of my Rails App.
For those who tried
localhost:4000
as the tutorial said but failed:input this
and get the result like
so you get the ip:
192.168.99.100
then visit
192.168.99.100:4000
, asip:your_port
After exposed the port, you can access the web app by the internal IP address created by docker. You can get the IP address using the container's name running the command:
Let's say that you got the IP
172.17.0.2
. You can runopen http://172.17.0.2:8000
You can find a right address to call your page this way First, find the CONTAINER ID by:
You will get the information like this:
Now you know the port: 4000. So that the address should be like this:
However, you can double check:
You will get in this case the following info:
Now you can try to look you project at
192.168.99.100
is the IP of your Docker host, in this instance. You need to expose the port of your container and then you will be able to connect to it from the outside world.I'm not familiar with Docker Compose, but the log you have posted suggests port 8000 is exposed. Try, therefore,
http://192.168.99.100:8000
.(The reason
http://192.168.99.100:2376
doesn't work is because that's the address and port of the Docker daemon itself, which isn't HTTP-based. As for0.0.0.0
: This is the address which your web server is listening on inside the container and equates to all external connections therein. However, without any ports exposed, there's no way in!)