2016-06-01 3 views
0

고정 표시기-작성 서비스와 네트워크를 서로</p> <p>이 <pre><code>. |-- docker-compose.yml |-- node1 | `-- Dockerfile |-- node2 | `-- Dockerfile </code></pre> <p></p>과 Dockerfile 등을 제공 발견 할 수있는 고정 표시기-작성 버전 2와 본질적으로 설정 2 간단한 노드 클러스터에 익숙해 시도

version: '2' 
services: 
    dn1: 
    build: ./node1/. 
    hostname: dn1.foo.com 
    command: tail -f /dev/null 
    dn2: 
    build: ./node2/. 
    hostname: dn2.foo.com 
    command: tail -f /dev/null 
,174 같은

FROM centos:centos6.6 

및 고정 표시기-compose.yml 실행에

docker-compose up -d 
docker exec -it test_dn1_1 bash 
$ hostname 
dn1.foo.com 
$ ping dn2.foo.com 
PING dn2.foo.com (23.x.x.122) 
$ ping dn1 
64 bytes from test_dn2_1.test_default (172.21.0.3) .... 

서비스는 컨테이너 내에서 기본적으로 검색 할 수 있습니까? 예? here

컨테이너를 서로 알게하려면 "링크"속성이 필요하다고 가정했습니다.

컨테이너가 '호스트 이름'으로 서로를 발견 할 수 있도록 docker-compose.yaml을 명시 적으로 구성하는 방법은 무엇입니까? 링크를 시도했지만 작동하지 않습니다.

감사

답변

0

내가 당신의 문제를 이해 확실하지 오전 : 고정 표시기-작성 버전 2를 사용하는 경우, 당신이 그랬던 것처럼, 당신이 당신의 컨테이너가 생성됩니다 docker-compose up -d 호출 할 때, 및 사용자 정의 네트워크가뿐만 아니라, 만들어지는 당신을 서비스 '컨테이너의 일부입니다.

이 네트워크 내부에서 컨테이너 이며 서비스 이름을 통해 검색 가능합니다.

떨어지게하지만, 날 귀찮게,하지만 난 그게 오타의 가정 : 당신이 그랬던 것처럼 당신이 서비스 dn1dn2을 만든 경우 당신은, 디렉토리 test에 당신이 쓴 다음 컨테이너가 test_dn1_1test_dn2_1하지 test_dn1을 지정해야합니다.
아니요 오타라고 생각합니다.

따라서 test_default이라는 이름의 네트워크가 있다는 것을 docker network ls으로 확인할 수 있으며 docker network inspect test_default을 실행하면 두 개의 컨테이너를 찾을 수 있습니다.

이제 test_dn1_1 내부에서 ping dn2을 실행하면 해결됩니다.

+0

서비스 이름이 아닌 구성에서 설정 한 호스트 이름으로 서비스 (또는 데이터 노드)를 확인하고 싶습니다. 그게 가능하니? – sunny

+0

예 컨테이너 이름이 잘못 입력 된 경우 – sunny