2016-08-01 5 views
0

두 컨테이너 (c1과 c2)를 실행 중입니다.도커 컨테이너가 다른 도커 컨테이너가 열어 놓은 포트에 연결할 수 없습니다.

C1 포트 2181에서 수신 대기하고 C2 포트에 2181

문제를 연결하는 것은 C2 포트는 말했다에 C1에 연결하는 데 실패하고 나는 이유를 모르겠어요입니다.

컨테이너에 C1에 연결하는 코드를 실행할 때 제대로 작동합니다. 그래서 나는 C1이 실행 중이고 포트가 올바르게 노출되어 있음을 알고 있습니다. 응용 프로그램을 자신의 컨테이너에 놓으면 포트가 더 이상 보이지 않습니다.

나는 C2 내에서 lsof를 시도했지만 나열되지 않았기 때문에 실패한 이유가 있습니다.

내가 다음에 볼 필요가있는 곳의 단서는 인정 될 것입니다.

나는 용기가 기본적으로 동일한 네트워크 그룹에 있어야하므로 고정 표시기가-구도를 사용하고 있었다

:

C1에서
version: '2' 
services: 
    c1: 
    build: . 
    volumes: 
     - .:/code 
    depends_on: 
     - c2 
    c2: 
    image: jplock/zookeeper 
    ports: 
     - "2181:2181" 
     - "2888:2888" 
     - "3888:3888" 

, 개시는 URI 로컬 호스트를 사용하고 있습니다 :

여기

내 작성 파일입니다 : 2181

+1

코드를 알려주십시오. 모든 것이 아니라 문제를 정확하게 재현하기에 충분합니다. 특히 두 번째 컨테이너에 연결하기 위해 어떤 주소를 사용하고 있습니까? – larsks

+0

아, 좋은 점은 호스트 이름 대신 작성 파일에 나열된 컨테이너의 이름을 사용해야한다는 것입니다. 나는 여전히 localhost를 참조하고있다. 나는 그것을 밖으로 시도하고 알려 드리겠습니다. – JamesC

+0

감사합니다. Larsks 당신이 저를 도왔습니다. – JamesC

답변

1

이 게시물을 발견하면 도움이 될 것입니다. 고정 표시기-작성을 사용하여

는 용기가 여기에 문서를 참조하십시오 고정 표시기의 작성 파일에서 서비스 별칭을 일치하는 호스트 이름을 설정 얻을 :

https://docs.docker.com/compose/networking/

수정 된 견적이 사용 사례에 맞게

각 컨테이너는 이제 호스트 이름 (예 : c2)을 검색하여 적절한 컨테이너의 IP 주소를 가져올 수 있습니다. 예를 들어, c1 응용 프로그램 코드는 // c2 : 2181 URL에 연결할 수 있습니다.

관련 문제