docker 및 Java 네트워킹 문제로 어려움을 겪고 있습니다. 도커 작성을 통해 시작된 여러 컨테이너가 있습니다. 어떤 사람들은 다른 사람들과 이야기해야합니다. 예를 들어 한 컨테이너가 RabbitMQ를 시작하고 다른 컨테이너가 RabbitMQ를 시작합니다. 컨테이너 이름으로 연결하는 URL을 사용하면 모든 것이 잘 작동합니다. 그러나 실제 docker 호스트 이름 주소를 사용하고 싶습니다 (사용하는 구성 파일을 도커 컨테이너 외부의 외부 시스템에서 사용할 수 있음). 그러면 이상하게 작동하지 않습니다.이 ping이 작동하지만 Java 코드가 Docker에서 호스트에 도달 할 수없는 경우
amqp://rabbitmq:5672
에 액세스하도록 구성된 경우messageconsumer, 그것은 잘 연결
- rabbitmq : 는 그래서 내가 두 개의 컨테이너가 있다고 가정 해 보자. 그러나 내 콘테이너는 호스트
docker.mycompany.com
에 말하고있다. 내가amqp://docker.mycompany.com:5672
을 URL로 사용한다면, 나의 메시지 소비자 자바 코드 barfs는java.net.NoRouteToHostException: Host is unreachable
이다.그러나 messageconsumer 컨테이너에서 쉘을 시작하면
ping docker.mycompany.com
이 작동합니다! 왜 셸과 ping은 호스트 주소를 찾지 만 Java는 찾지 못합니까? 내 이미지는 openjdk : alpine을 기반으로합니다.도움을 주셨습니다.
아마도 관련 : https://docs.docker.com/english/userguide/networking/default_network/binding/ – nwinkler
컨테이너의 포트를 호스트에 매핑하고 있습니까? Docker는 기본적으로이 작업을 수행하지 않으므로 amqp : // rabbitmq : 5672가 동일한 Docker 네트워크의 컨테이너를 연결하고 연결하는 반면, 특별히 구성하지 않으면 amqp : //docker.mycompany.com : 5672가 연결되지 않습니다. 그렇게. –
예, 포트가 매핑되어 있고 외부에서 컨테이너에 액세스 할 수 있습니다. –