If I set up a webserver like so
docker run --name landing -v /docker/landing:/usr/share/nginx/html:ro -d -p 10000:80 nginx
which have the ip 172.17.0.2
and do
# curl -i http://172.17.0.2:10000
curl: (7) Failed to connect to 172.17.0.2 port 10000: Connection refused
root@8343dfde24fd:/#
If I access the public IP of the host with example.com:10000
when it works.
Is there a way to make the ports available on the Docker host and the other containers without linking them?
Hello,
the -p 10000:80
option will set up a port forward. port 10000 on the host will forward to port 80 on the container. The 172.17.0.2 ip address looks like it is the ip address of the container, not the host. I would expect that you can use port 10000 on any host ip address, including the host’s 127.0.0.1/localhost.
Normally if you want to access a container’s service from the host or outside the host, you will want to use the port publishing feature, and connect to the published port, not the container’s IP.
If you want to connect to a container from another container, --link
helps make it easy to resolve the ip and figure out what port to make the connection on.
Additionally, if you have containers connected to a docker network create
custom network, they can find eachother by name.
For example:
docker network create test
docker run --name webtest --net=test -d nginx:alpine
docker run --rm -it --net=test alpine ping -c 1 webtest
PING webtest (172.22.0.2): 56 data bytes
64 bytes from 172.22.0.2: seq=0 ttl=64 time=0.142 ms
--- webtest ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.142/0.142/0.142 ms
1 Like
Thanks a lot. localhost:10000
works perfectly =)
Your net example is very interesting! That is just what I am looking for the nginx reverse proxy I am trying for set up =)