无法在Docker容器外部ping端口80-接收失败-对等重置连接

时间:2018-11-30 23:22:37

标签: reactjs docker nginx docker-compose

我正在docker容器中创建一个react应用。更具体地说,它包含的内容远不止于此,但我被困在react / nginx:80暴露在容器外部的情况下。当我使用另一个端口(例如3000或8080)时,我似乎没有这个问题。

git cone https://chrisconnors@bitbucket.org/chrisconnors/mndspn.git

然后我用frontend docker-compose up --build -d frontend

运行后,我可以在容器本身中点击0.0.0.0:80

/ # wget 0.0.0.0:80
Connecting to 0.0.0.0:80 (0.0.0.0:80)
index.html           100% |******************************************|   548   0:00:00 ETA

但是,当我在浏览器中点击它或从终端(容器外部)卷曲时,会出现此错误:

:~/src/mndspn$ curl --trace-ascii dump.txt 0.0.0.0:80
curl: (56) Recv failure: Connection reset by peer
:~/src/mndspn$ cat dump.txt 
== Info: Rebuilt URL to: 0.0.0.0:80/
== Info:   Trying 0.0.0.0...
== Info: TCP_NODELAY set
== Info: Connected to 0.0.0.0 (127.0.0.1) port 80 (#0)
=> Send header, 71 bytes (0x47)
0000: GET / HTTP/1.1
0010: Host: 0.0.0.0
001f: User-Agent: curl/7.58.0
0038: Accept: */*
0045: 
== Info: Recv failure: Connection reset by peer
== Info: stopped the pause stream!
== Info: Closing connection 0

2 个答案:

答案 0 :(得分:0)

对Docker容器的连接重置通常表示您已为该容器定义了一个端口映射,该端口映射不指向应用程序。

因此,如果您已定义80:80的映射,请检查docker实例中的进程实际上是否在端口80上运行(netstat -an | grep LISTEN)。

确保您的docker run命令中有-p 80:80选项

答案 1 :(得分:0)

只需检查您可能正在使用的docker compose文件,frontend服务中就不会暴露端口80。

{{3}}

取消注释端口行{Line 39-40}

ports:
  - "80:80" 

使用docker-compose再次启动容器,您应该可以访问该应用程序。