首頁 >後端開發 >Golang >為什麼我無法連線到 Docker 中的 gRPC 服務:「接收失敗:連線被對等方重設」?

為什麼我無法連線到 Docker 中的 gRPC 服務:「接收失敗:連線被對等方重設」?

Patricia Arquette
Patricia Arquette原創
2024-11-16 04:36:03596瀏覽

Why Can't I Connect to My gRPC Service in Docker:

Docker 連接埠暴露問題:解決「接收失敗:連線被對等方重設」

在Docker 環境中,您遇到了問題當嘗試公開在容器中執行的gRPC 服務時。偵聽連接埠8081 的服務無法接收連接,並出現錯誤「接收失敗:連接已被對等方重設。」

您的Docker Compose 配置正確地將連接埠8081 對應到容器的內部端口,但出現此問題是由於gRPC 伺服器綁定到其偵聽位址的方式。預設情況下,當使用「http.ListenAndServe("localhost:8081", nil)」時,伺服器僅偵聽環回介面 (127.0.0.1)。這意味著它只能接受來自容器本身內部的連接。

要解決此問題,您可以修改 Go 應用程式以偵聽所有介面。這可以透過使用以下程式碼來實現:

http.ListenAndServe("0.0.0.0:8081", nil)

透過指定“0.0.0.0”,伺服器將綁定到所有網路接口,從而允許它接受環回和外部連接。這將確保來自容器外部的請求可以到達您的 gRPC 服務。

附加說明:

  • 如果您使用 Kubernetes 來管理 Docker 容器,請確保暴露連接埠 8081 的服務配置了正確的 NetworkPolicy 以允許傳入流量。
  • 如果您仍然遇到進行上述更改後出現問題,請考慮檢查您的防火牆設置,以確保連接埠對傳入連線開放。

以上是為什麼我無法連線到 Docker 中的 gRPC 服務:「接收失敗:連線被對等方重設」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn