【发布时间】:2017-08-31 19:53:05
【问题描述】:
我在我的 Ubuntu Linux 14.04 机器上运行了一个 Docker 容器,它公开了一个端口:
docker run --name spacyapi -d -p 127.0.0.1:7091:7091 jgontrum/spacyapi:en
我可以在本地机器上毫无问题地连接容器中的服务器并对其执行命令。例如:
curl http://localhost:7091/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST
命令忠实执行。但是,如果我从外部机器尝试相同的 CURL 命令,我会收到“连接被拒绝”错误:
curl http://192.5.169.50:5000/api --header 'content-type: application/json' --data '{"text": "This is a test."}' -X POST
curl: (7) Failed to connect to 192.5.169.50 port 7091: Connection refused
其中 192.5.169.50 是运行 Docker 容器的盒子的 IP 地址。
我认为我不需要任何 iptables 规则,因为我不需要为在同一个机器上运行的 Node.JS 服务器设置任何内容。我本地网络上的所有其他计算机都可以正常访问 Node.JS 服务器。但不是 Docker 容器充当服务器。
我该如何解决这个问题?
【问题讨论】:
-
我不认为容器的IP是192.5.169.50。尝试使用
docker inspect <container-uid> | grep IPAddress来检查容器的IP。 -
@BillCheng - 192.5.169.50 是运行 Docker spaCy 容器的机器的 IP 地址。我正在从我们 Intranet 上的另一个盒子访问该盒子。
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
标签: linux docker port iptables