登录
首页 >  Golang >  Go问答

Docker端口暴露问题:对等方重置连接导致接收失败

来源:stackoverflow

时间:2024-02-18 20:57:23 235浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Docker端口暴露问题:对等方重置连接导致接收失败》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在尝试在 docker 容器中运行 go 应用程序二进制文件。该应用程序有一些正在侦听和服务器的 grpc 请求:

http.listenandserve("localhost:8081", nil)

在我的 docker-compose.yaml 中。我有一个应用程序的服务映射到8081:

golangapp:
    build:
      context: .
      dockerfile: ./docker/golangapp/dockerfile
    depends_on:
      - setup
    ports:
      - 8081:8081

docker-compose up 之后,我可以看到正在提供应用程序的详细信息。

但我还是达不到。 curl -x 选项 http://localhost:8081 返回

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

如果我在没有 docker 的情况下在本地运行二进制文件,那么我可以向应用程序发送请求。

有什么建议吗?我做了一些谷歌搜索,并指出了防火墙问题。但我不知道如何继续。


解决方案


如果你这样做:

http.listenandserve("localhost:8081", nil)

这将侦听来自环回接口的连接。当在容器中运行时,它将只接受来自该容器内的连接(或者如果您在 k8s pod 中运行它,则在同一个 pod 中)。所以:

http.ListenAndServe(":8081", nil)

这将接受环回和外部连接(容器外部)。

以上就是《Docker端口暴露问题:对等方重置连接导致接收失败》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>