Docker 컨테이너에서 DNS를 지속적으로 만들기 [닫기]

Docker 컨테이너에서 DNS를 지속적으로 만들기 [닫기]

나는 편집하여 /etc/resolv.conf넣은 컨테이너 1을 가지고 있습니다 nameserver 8.8.8.8. ping google.com훌륭하게 작동합니다. 하지만 다음을 사용하여 Docker 컨테이너를 다시 시작할 때 이를 영구적으로 만들어야 합니다.

sudo docker restart container1

더 이상 내 컨테이너를 통해 google.com을 ping할 수 없습니다.

노트:

나는 그들이 3-7년 전에 여기에 게시한 것을 시도해 보았습니다. 이것은 작동하지 않습니다. 내 우분투 버전은 18.04입니다.

답변1

아래에서 언급했듯이DNS 서비스, 컨테이너는 기본적으로 호스트에서 resolv.conf 파일을 상속합니다.

[root@testvm ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

[root@testvm ~]# docker run -it ubuntu bash

root@a0a0d88f6db8:/# mount|grep resolv.conf
/dev/mapper/centos-root on /etc/resolv.conf type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

root@79c567a830b4:/# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

컨테이너 내부에 DNS 이름 서버 구성을 추가하려면 다음 두 가지 옵션이 있습니다.

  1. 호스트의 resolv.conf 파일에 DNS 이름 서버를 추가합니다.
  2. --dnsDNS 이름 서버를 명시적으로 지정하는 하나 이상의 옵션으로 컨테이너를 시작합니다 .

--dns사용 중인 옵션은 다음과 같습니다 .

[root@testvm ~]# docker run -it --dns 8.8.8.8 --dns 8.8.4.4 ubuntu bash
root@3ae155186997:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

아래 nginx 이미지에 표시된 것처럼 이 옵션은 재부팅 후에도 유지됩니다.

[root@testvm ~]# docker run -d -p 8080:80 --dns 8.8.8.8 --dns 8.8.4.4 nginx
97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36

[root@testvm ~]# docker exec -it 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36 bash

root@97f76bedfad8:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

root@97f76bedfad8:/# exit
exit

[root@testvm ~]# docker restart 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36
97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36

[root@testvm ~]# docker exec -it 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36 bash
root@97f76bedfad8:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

관련 정보