Docker는 컨테이너 내 /etc/resolv.conf 파일을 재정의합니다.


17

resin/rpi-raspbian:jessie컨테이너 를 다음과 같이 설정하고 싶습니다 /etc/resolv.conf.

nameserver 208.67.222.222
nameserver 208.67.220.220

내 Dockerfile에는 다음 줄이 있습니다.

ADD resolv.conf /etc/resolv.conf

이 추가 된 파일에는 올바른 이름 서버가 포함되어 있습니다.

내 Docker 호스트 /etc/resolv.conf에 올바른 정보 가 포함되어 있습니다.

다음과 같이 컨테이너를 실행 중입니다.

docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \
-v /home/pi/share/ovpn:/ovpn \
--privileged --network=internet_disabled --name vpn-client \
--dns=208.67.222.222 \
openvpn-client_nat-gateway /bin/bash

이 모든 것에도 불구하고 컨테이너는 다음과 같은 출력을 제공합니다.

root@642b0f4716ba:/# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

컨테이너 내에서 (또는 docker exec를 사용하여) resolv.conf를 수동으로 변경 한 후에 만 ​​올바르게 보입니다.

오히려 exec 명령으로 수정하지 않아도됩니다. 아무도 여기서 무슨 일이 일어나고 있는지 알고 있습니까?


위키 에 몇 가지 경우가 있으며 상황을 설명 할 수 있습니다.
Julie Pelletier

내 질문 과 답변을 살펴보십시오 .
Zeinab Abbasimazar

답변:


14

AFAIK, docker는 이미지가 시작될 때 이미지의 일부 파일 을 Dockerfile에 추가 했더라도 무시합니다. 이것은 확실히를 포함하며 /etc/hosts, 아마도 똑같이 일어날 것입니다 /etc/resolv.conf. 이것은 Docker의 기본 "내부"네트워크를 올바르게 구축하는 데 사용됩니다 (이미지는 서로를 볼 수 있지만 호스트 등은 아닙니다). 실제로 해당 파일 중 일부를 무시 / 수정하려면 확실 해야합니다. 런타임 작업의 일부, 즉 CMD라인의 일부로 수행하십시오 . 예를 들면 다음과 같습니다.

...
ADD resolv.conf /etc/resolv.conf.override
CMD cp /etc/resolv.conf.override /etc/resolv.conf && \
        your_old_commands...

3
맞습니다. /etc/resolv.conf컨테이너가 시작될 때 호스트에서 복사됩니다.
wisbucky 2016 년

4

보시다시피 user-defined networksDocker Engine 버전> = 1.10을 사용 하고 있습니다. 따라서 공식 도커 엔진 설명서에서 Embedded DNS server in user-defined networks:

이러한 --dns IP 주소는 내장 DNS 서버에 의해 관리되며 컨테이너의 /etc/resolv.conf 파일에서 업데이트되지 않습니다.

DNS는 작동해야하지만 구성 파일에는 표시되지 않습니다.

참고 문헌 .


0

Azure 컨테이너의 웹 응용 프로그램 인 경우 문제를 해결했습니다.

있다 2 개 용기 메이트 . 쿠두와 호스트

단계

1. docker 파일에서 ssh를 설치하십시오 (sshd 구성 포함)

2. containerstart.sh (resolv.conf를 업데이트 함)를 만듭니다.

3. 내부 진입 점 설정

이제 호스트 resolv.conf가 업데이트되고 원하는 DNS를 사용할 수 있습니다

추신 : 네트워크에서 사용자 정의 DNS를 선택할 수 없다면 걱정하지 마십시오. 우리도 할 수 없었습니다. ASE 환경을 사용하는 경우 다시 설정해야 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.