Docker端口不能从主机访问

Docker端口不能从主机访问,第1张

概述Docker端口不能从主机访问

我刚刚完成了一个新的Spring Boot应用程序,并试图将其部署到Docker。 在容器内应用程序工作正常。 它使用端口9000作为面向用户的请求,使用9100作为健康检查等pipe理任务。 当我启动docker实例并尝试访问端口9000时,出现以下错误:

curl: (56) Recv failure: Connection reset by peer

经过大量的实验(通过curl),我确认了几种不同的configuration,应用程序在容器内部工作正常,但是当我尝试将端口映射到主机时,它不能连接。 我试着用下面的命令启动它。 他们都不允许我从主机访问端口。

docker run -P=true my-app docker run -p 9000:9000 my-app

解决方法

唯一可行的方法是使用–net主机选项 ,但是这不允许我在该主机上运行多个容器。

docker run -d --net=host my-app

端口的实验和揭露

我已经使用Dockerfile的各种版本公开不同的端口,如9000和9100或9000.没有任何帮助。 这是我的最新版本:

在Nginx后面运行一个Spring Boot应用程序

Nginx反向代理Websocket身份valIDation – http 403

FROM ubuntu MAINTAINER redacted RUN apt-get update RUN apt-get install openjdk-7-jre-headless -y RUN mkdir -p /opt/app workdir /opt/app ADD ./target/oauth-authentication-1.0.0.jar /opt/app/service.jar ADD config.propertIEs /opt/app/config.propertIEs EXPOSE 9000 ENTRYPOINT java -Dext.propertIEs.dir=/opt/app -jar /opt/app/service.jar

你好世界的作品

为了确保我可以运行Spring Boot应用程序,我尝试了Simplest-Spring-Boot-MVC-HelloWorld ,它工作的很好。

Netstat结果

我已经使用netstat从主机和容器进行端口扫描:

从主机

root@my-docker-host:~# nmap 172.17.0.71 -p9000-9200 Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-14 19:19 UTC Nmap scan report for my-docker-host (172.17.0.71) Host is up (0.0000090s latency). Not shown: 200 closed ports PORT STATE SERVICE 9100/tcp open jetdirect MAC Address: F2:1A:ED:F4:07:7A (UnkNown) Nmap done: 1 IP address (1 host up) scanned in 1.48 seconds

从容器中

root@80cf20c0c1fa:/opt/app# nmap 127.0.0.1 -p9000-9200 Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-14 19:20 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.0000070s latency). Not shown: 199 closed ports PORT STATE SERVICE 9000/tcp open csListener 9100/tcp open jetdirect Nmap done: 1 IP address (1 host up) scanned in 2.25 seconds

容器使用Ubuntu我复制的主机是Centos和Ubuntu。

这个SO问题似乎很相似,但有很less的细节和答案,所以我想我会试图logging我的情况多一点。

我有一个类似的问题,其中指定一个主机IP地址为“127.0.0.1”不能正确转发端口的主机。

将Web服务器的IP设置为“0.0.0.0”可以解决问题

例如 – 对于我的节点应用程序 – 以下不起作用

app.Listen(3000,'127.0.0.1')

在以下情况下工作:

app.Listen(3000,'0.0.0.0')

我猜这意味着码头,默认情况下,暴露0.0.0.0:containerPort – >本地端口

您应该使用docker run -P来docker run -P以使端口自动映射到在Dockerfile中设置的相同值。请参阅http://docs.docker.com/reference/run/#expose-incoming-ports

总结

以上是内存溢出为你收集整理的Docker端口不能从主机访问全部内容,希望文章能够帮你解决Docker端口不能从主机访问所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存