>source

이유로 포트를 노출하는 윈도우 서비스가 있습니다. 컨테이너에서 실행하려고하지만 컨테이너 외부의 응용 프로그램에 연결할 수없는 것 같습니다. 컨테이너를 다음과 같이 실행합니다.

docker run --net=nat -p:8080:8080 [container]

서버가 청취하는 코드에서 다음을 사용합니다

   _listener = new TcpListener((IPEndPoint)listenEndPoint);//localhost,8080

컨테이너에 연결하고 powershell 명령을 실행하여 포트가 열려 있고 수신되는지 확인하면 작동합니다. 이것은 powershell 명령입니다 :

New-Object System.Net.Sockets.TcpClient("127.0.0.1", 8080)

연결 기능을 작동시키기 위해 더 많은 구성이 필요합니까?

편집: 위의 코드를 통해 TCP 클라이언트를 수신하는 동일한 서비스에서 WCF 엔드 포인트를 호스팅합니다. 잘 해결됩니다.

  • 답변 # 1

    컨테이너의 루프백 인터페이스는 호스트의 루프백 인터페이스와 다릅니다. 컨테이너에서 서비스를 실행중인 경우 "0.0.0.0"에 바인딩해야합니다. 이렇게하면 컨테이너가 실제로 호스트 시스템에서 바인딩 된 포트를 수신하고 있는지 확인할 수 있습니다.

관련 자료

  • 이전 java - Google Pixel에서 setVolume이 작동하지만 Galaxy S9가 작동하지 않는 원인은 무엇입니까?
  • 다음 python - 2d 배열의 numpy 배열의 인덱스 부분조차도 함수 호출