Ich habe einen Docker Container mit "EXPOSE 8000" unter seinen Anweisungen gebaut. Ich begann den Prozess wie folgt aus:Docker: im Container hören, nicht draußen antworten
sudo docker run -t -i -P imagename
Der Prozess in dem Behälter auf 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
#
Auf dem Host hört (dh außerhalb des Behälters), sehe ich, dass Port 49164 zu gebunden ist Containerhafen 8000:
[S-22][email protected]:~ $ 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][email protected]:~ $
Inded, sagt docker inspect
(unter anderem)
"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"
}
]
}
},
Und trotzdem kann ich nicht mit dem Container sprechen. Draußen
[S-22][email protected]:~ $ telnet localhost 49164
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
1,[S-22] [email protected]:~ $
während im Inneren,
# 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>
...
Ich würde die telnet zu 49.164 auf der Außenseite erwarten html zurückzukehren, wie es auf der Innenseite der Fall ist.
Irgendwelche Vorschläge?
Aha hören laufen lassen, dies könnte sein, dass der Behälter auf localhost wirklich nur zuhört. Wenn ich dasselbe auf Host siegfried mache, kann ich mich mit 'telnet localhost 8000' verbinden, aber nicht mit' telnet siegfried8000'. OK, also, wie repariere ich das jetzt ... – jma