'Docker listening in container but not answering outside, why?
I have a docker container built with "EXPOSE 8000" among its instructions. I started the process like this:
sudo docker run -t -i -P imagename
The process in the container is listening on 8000.
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:8000 *:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
#
On the host (i.e., outside the container), I see that port 49164 is bound to container port 8000:
[S-22]jeff@siegfried:~ $ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b0e333c6ec9 lkz:latest "/bin/bash" About an hour ago Up 6 minutes 0.0.0.0:49164->8000/tcp lkxyz__2015-01-18_202737
[S-22]jeff@siegfried:~ $
Inded, docker inspect says (among other things)
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"IPAddress": "172.17.0.16",
"IPPrefixLen": 16,
"PortMapping": null,
"Ports": {
"8000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "49164"
}
]
}
},
And yet, I can't talk to the container. Outside,
[S-22]jeff@siegfried:~ $ telnet localhost 49164
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
1,[S-22] jeff@siegfried:~ $
while inside,
# telnet localhost 8000
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /
[18/Jan/2015 23:00:59] "GET /" 200 4066
<!DOCTYPE html>
<html>
<head>
...
I would expect the telnet to 49164 on the outside to return html as it does on the inside.
Any suggestions?
Solution 1:[1]
You probably want to have the service you're running in the container to listen on 0.0.0.0 rather than 127.0.0.1
Solution 2:[2]
Try to connect 172.17.0.16:8000 from the host. I had a similar problem with nginx. I replaced 127.0.0.1:8000 to 172.17.0.16:8000 inside the container and it worked for me.
Solution 3:[3]
bind port 8000 of the container to TCP port 8000
docker run -d -p 8000:8000 image-name
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Liam |
| Solution 2 | alchemist |
| Solution 3 | Sehrish Waheed |
