我刚刚完成了一个新的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.没有任何帮助。 这是我的最新版本:
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从主机和容器进行端口扫描:
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