2016-09-09 6 views
0

동일한 네트워크에 여러 개의 도커 컨테이너가 있습니다. test01.docker 컨테이너에있는 API에서 결과를 얻기 위해 containerA에 컬을 사용하려고합니다.도커 컨테이너 : 컨테이너 사이의 말림이 작동하지 않습니다.

나는 콘테이너 A에서이 명령을 실행하여 다음과 같이

curl -s test-01.docker:8031/app?status -v 

출력은 다음과 같습니다

* Hostname was NOT found in DNS cache 
* Trying 172.19.0.24... 
* connect to 172.19.0.24 port 8031 failed: Connection refused 
* Failed to connect to test-01.docker port 8031: Connection refused 
* Closing connection 0 

나는 다음과 같은 명령을 사용하여 containerA에서 핑 test01.docker하려고하면

ping test-01.docker 

성공했습니다.

도커 ps를 실행하면 다음과 같은 정보가 표시됩니다. 안에 있음

43823212be7e  mytestimage  "/docker-entrypoint.s" 53 seconds ago  Up 47 seconds  22/tcp, 2812/tcp, 5060-5061/tcp, 6970-6971/tcp, 8002/tcp, 8030-8031/tcp, 8033/tcp, 8071/tcp, 8888/tcp, 9020-9023/tcp containerA 

이는 포트 8031이 노출되어 있음을 나타냅니다. 나는 이것이 컬이 왜 실패하고 있는지 알아낼 수 없다. test-01.docker에서 다음 명령을 실행하면 정확한 결과를 얻을 수 있습니다.

curl -s localhost:8031/app?status 

동일한 네트워크의 다른 컨테이너에서 작동하지 않는 이유를 잘 모릅니다. 내가 뭔가를 놓친다면 말해줘.

업데이트 : 내 고정 표시기-작성 파일은 다음과 같습니다

version: '2' 

    services: 
    test-01.docker: 
     image: ############## 
     expose: 
     - 22 
     - 2812 
     - 8031 
     hostname: test-01 
     domainname: docker 
+0

그것을 시도하여 내부 도커 네트워크. 포트 8031은 도커 컨테이너가 서로 통신하기 위해 사용하는 인터페이스가 아닌 다른 인터페이스를 통해 호스트 시스템에 노출됩니다. – ffledgling

+0

Dockerfiles/docker-compose.yml을 (를) 공유 할 수 있습니까? – johnharris85

+0

@ffledgling 포트 8031을 도커 컨테이너에서 사용하는 것과 동일한 인터페이스를 통해 호스트 컴퓨터에 노출 시키려면 어떻게합니까? –

답변

0

그것은 테스트 01.docker 내에서 실행되는 응용 프로그램은 127.0.0.1에서 수신 것으로 보인다, 그래서 어떤 액세스 할 수 없습니다 이 컨테이너

외부의 다른 프로그램 (테스트 01.docker 내부) 귀하의 응용 프로그램을 보자 0.0.0.0 주소를 듣고 고정 표시기 용기가 간단하기 때문에 사실에 포트 8031에서 수신 대기하지 * * 다시

+0

당신이 옳습니다. 이것이 문제입니다. 127.0.0.1 대신 0.0.0.0에서들을 수 있도록 어떻게 바꿀 수 있습니까? –

+0

그건 도커에 관한 사업이 아니에요, 내가 어떻게 당신에게 말하기 전에 그 앱이 무엇인지 알아야한다고 생각합니다. – Choldrim