2017-11-19 4 views
0

클라이언트 및 서버 응용 프로그램이 있습니다. 서버는 TCP localhost:3344 주소로 청취하고 클라이언트는 localhost:3344으로 메시지를 보냅니다. 동일한 호스트에서 실행하면 정상적으로 작동합니다.클라이언트 및 서버 응용 프로그램이 컨테이너 및 호스트에서 실행 중일 때 통신 할 수 없습니까?

서버가 도커 컨테이너에서 실행 중이고 클라이언트가 호스트에서 실행 중이면 서버에서 메시지를받지 못합니다. 컨테이너가 호스트의 localhost에서 수신하도록 네트워킹을 설정하는 방법을 잘 모릅니다.

docker run -it --expose 3344 -p 127.0.0.1:3344:3344 run-server 
+1

가 0.0.0.0 또는 로컬 호스트에서 수신 서버인가요? 서버가 로컬 호스트에서 수신 대기 중이면 외부에서가 아니라 도커 컨테이너의 IP 주소에서 생성 된 요청 만 수신합니다. 도커 컨테이너의 IP는 호스트 IP와 다릅니다. – Cyclops

+0

서버가 0.0.0.0이 아닌 로컬 호스트에서 수신 대기 중 – Cory

+0

그러면 서버가 '0.0.0.0'에서 수신하도록해야합니다. 도커 실행 명령에'-p 127.0.0.1 : 3344 : 3344'을 지정했기 때문에 docker는 127.0.0.1:3344 (호스트)의 패킷 만 서버 컨테이너의 3344 포트로 전달하는 Iptable 규칙을 만듭니다. 따라서 호스트가 아닌 다른 누구도 도커 컨테이너에서 실행중인 서버로 요청을 보낼 수는 없습니다. – Cyclops

답변

0

이 당신을 위해 일을 할 것입니다 : 나는 다음과 같은 시도

docker run -it -p 3344:3344 <docker repository name> run-server