2016-06-15 3 views
1

이 문제는 XY 문제 일 수 있으므로이 문제를 해결하는 가장 좋은 방법을 모르기 때문에 질문의 컨텍스트를 포함하겠습니다.docker-compose에서 DNS 컨테이너를 설정하려면 어떻게해야합니까?

AWS에 kubernetes 환경을 설정하여 nginx 컨테이너와 백엔드 서비스 (두 가지를 SvcA라고 부름)가 있습니다. 백엔드 서비스가오고 갈 수 있기 때문에, 내의 nginx의 설정에서 나는처럼 보이는 무언가가 :이 설정이는 Kubernetes에 잘 작동

resolver kube-dns.kube-system.svc.cluster.local valid=60s ipv6=off; 

server { 
    # stuff 
    location/{ 
     set $backend "SvcA.default.svc.cluster.local:8000"; 
     proxy_pass http://$backend; 
    } 
} 

을,하지만 난 길가에 (거의) 동일한 설정을 가진이 원하는 테스트/개발을위한 나의 로컬 머신. 그러나 kubernetes 사용의 모든 오버 헤드가 없다. 내가하고 싶은 일은이 두 컨테이너 (nginx, SvcA)를 도커 작성 파일에 집어 넣고 그런 식으로 작업하게하는 것입니다. 내가 겪었던 문제는 nginx의 해석자가 kubernetes에 대한 URL이되도록 하드 코딩되어 있고, 생각할 수있는 해결책은 DNS 컨테이너 인 것입니다. 유일한 항목은 " SvcA.default.svc.cluster.local "을 docker-compose라는 이름으로 할당하십시오.

이 방법이 문제를 해결하는 가장 좋은 방법인지 확신 할 수 없지만 DNS 구성을 설정하기에 충분하지 않습니다. 이것이 내 문제에 대한 최선의 해결책인가? 그렇다면 DNS 서버를 어떻게 구성 할 것인가?

답변

1

DNS가 필요한지 잘 모르겠습니다.

당신은 URL이 하드 코딩 된 경우에도, 같은 것을 할 수 예를 들어 고정 표시기 - compose.yml 각 컨테이너 등 심지어 설정 호스트 이름, 당신은 또한 그들 사이에 링크를 만들 수 있습니다

version: '2' 
services: 
    service1: 
    ... 
    networks: 
    back-tier: 
     ipv4_address: "172.16.238.10" 
    service2: 
    ... 
    networks: 
     back-tier: 
     ipv4_adress: "172.16.238.11" 
networks: 
    back-tier: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 172.16.238.0/24 
     gateway: 172.16.238.1 

. 순환이 필요하다면 extra_hosts 매개 변수로 할 수 있습니다. 컨테이너가 동일한 네트워크에있는 경우가 아마있을 줄 알았 서로

+0

이야기 할 수 있어야한다 https://docs.docker.com/compose/compose-file/

:

당신이 여기에 필요한 모든 정보를 찾을 수 있어야합니다 경우

더 간단한 방법. 그것은 나를 거기에서 가장 길게 만든다. "127.0.0.11"이 항상 내부 네임 서버의 IP인지 여부를 알고 있습니까? (내가 nginx 구성에서 해결사에 대한 "extra_hosts"항목을 만들어야하고 내부 DNS의 IP를 설정하는 방법에 대한 문서를 찾을 수 없습니다) – Richard

+0

나는 docker-compose에서 다음 매개 변수를 사용할 수 있다고 생각합니다. .yml https://docs.docker.com/v1.11/compose/compose-file/#dns –

관련 문제