> 백엔드 개발 > Golang > Docker에서 내 gRPC 서비스에 연결할 수 없는 이유: 'Recv failure: Connection Reset by Peer'?

Docker에서 내 gRPC 서비스에 연결할 수 없는 이유: 'Recv failure: Connection Reset by Peer'?

Patricia Arquette
풀어 주다: 2024-11-16 04:36:03
원래의
596명이 탐색했습니다.

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

Docker 포트 노출 문제: "Recv failure: Connection Reset by Peer" 해결

Docker 환경에서 문제가 발생했습니다. 컨테이너에서 실행 중인 gRPC 서비스를 노출하려고 시도하는 동안. 포트 8081에서 수신 대기하는 서비스가 "Recv failure: Connection Reset by Peer" 오류와 함께 연결 수신에 실패합니다.

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 서비스에 연결할 수 없는 이유: 'Recv failure: Connection Reset by Peer'?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿