我刚刚完成了一个新的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端口不能从主机访问所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)