Docker 码头工人在集装箱里听着,但在外面没有回答,为什么?
我有一个docker容器,其中包含“EXPOSE 8000”指令。我是这样开始这个过程的:Docker 码头工人在集装箱里听着,但在外面没有回答,为什么?,docker,Docker,我有一个docker容器,其中包含“EXPOSE 8000”指令。我是这样开始这个过程的: sudo docker run -t -i -P imagename 容器中的进程正在侦听8000 # netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp
sudo docker run -t -i -P imagename
容器中的进程正在侦听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
#
在主机上(即容器外部),我看到端口49164绑定到容器端口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:~ $
独立,docker inspect
说(除其他外)
然而,我不能和集装箱说话。外面,
[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:~ $
在里面,
# 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>
...
#telnet localhost 8000
正在尝试::1。。。
正在尝试127.0.0.1。。。
已连接到本地主机。
转义字符为“^]”。
得到/
[18/Jan/2015 23:00:59]“GET/”200 4066
...
我希望telnet在外部返回49164,就像在内部一样返回html
有什么建议吗?您可能想让容器中运行的服务收听
0.0.0
,而不是127.0.0.1尝试从主机连接172.17.0.16:8000。
我对nginx也有类似的问题。
我将容器中的127.0.0.1:8000替换为172.17.0.16:8000,这对我很有效。Aha,这可能是容器实际上只监听localhost。在主机siegfried上执行相同的操作,我可以连接telnet localhost 8000
,但不能连接telnet siegfried 8000
。好的,那么现在我该如何修复这个…这是一个救命恩人。使用docker for Apache Spark,spark://0.0.0.0:7077how 我们是否在windows 10中使用docker执行此操作?侦听0.0.0.0?在我们的示例中,端口正在侦听0.0.0.0,但我们需要将Docker重置为出厂默认值(Docker首选项/炸弹选项卡)并重新安装图像。只是为了确认,是的,这是Docker接受传入连接但Docker内部运行的服务拒绝它们时您将看到的行为。我还必须将Docker服务更改为侦听0.0.0.0以修复该问题,但Docker配置本身在其他方面没有更改。详细说明了为什么会这样
# 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>
...