Docker로 사용자 지정 DNS 서버를 구성하는 방법은 무엇입니까?


8

/etc/hosts웹 응용 프로그램이 Docker 컨테이너 내에서 작동 하려면 몇 줄을 추가해야합니다 .

도커 /etc/hosts는 읽기 전용입니다.

dnsmasq를 사용하려고합니다.

우분투에서 : 14.04
# ...
실행 apt-get 설치 -y -q dnsmasq
에코 실행 'listen-address = 127.0.0.1'>> /etc/dnsmasq.conf
에코 실행 'resolv-file = / etc / resolv.dnsmasq.conf'>> /etc/dnsmasq.conf
에코 실행 'conf-dir = / etc / dnsmasq.d'>> /etc/dnsmasq.conf
echo 'user = root'>> /etc/dnsmasq.conf 실행
에코 실행 'nameserver 8.8.8.8'>> /etc/resolv.dnsmasq.conf
에코 실행 'nameserver 8.8.4.4'>> /etc/resolv.dnsmasq.conf
에코 실행 'address = "/ mydomain / 127.0.6.1"'>> /etc/dnsmasq.d/0hosts
RUN 서비스 dnsmasq 시작

그러나 Docker가 DNS 서버를 사용할 수 없습니다.

$ docker --dns = 127.0.0.1 my / container cat /etc/resolv.conf를 실행하십시오.
네임 서버 8.8.8.8
네임 서버 8.8.4.4

내가 무엇을 놓치고 있습니까?

구성 :

  • OS X 10.9.4
  • Docker 버전 1.1.0, 빌드 79812e3
  • boot2docker 클라이언트 버전 : v1.1.0, Git 커밋 : 7e20d36

답변:


10

--dns작동 docker run하지만 작동 하지 않습니다 docker build. 더 나은 해결책은 설정을 전체적으로 조정하는 것입니다.

DOCKER_OPTS="--dns=my-private-dns-server-ip --dns=8.8.8.8"

우분투에서 나는이 라인을 넣어 /etc/default/docker


참고 /etc/default/docker당신은 수정해야합니다, 파일이 고정 표시기 데몬이 실행될 때 사용되지 않는 daemon.json설정 파일을. 참조 docs.docker.com/engine/reference/commandline/dockerd/...
다비드 Icardi에게

6

내가 놓친 것은 옵션과 인수의 순서를 엉망으로 만들었다는 것입니다. --dnsafter를 지정 run하면 모든 것이 잘 작동합니다.

$ docker run --dns = 127.0.0.1 my / container cat /etc/resolv.conf
네임 서버 127.0.0.1


그러나 이것은 작동하지 않습니다 — dnsmasq가 다운되었습니다.
Alexander Gladysh

--dns옵션을 한 번 이상 사용할 수도 있습니다 . 예를 들어docker run --dns 8.8.8.8 --dns 127.0.0.1 my/container
Bruno Bieri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.