나는 편집하여 /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 이름 서버 구성을 추가하려면 다음 두 가지 옵션이 있습니다.
- 호스트의 resolv.conf 파일에 DNS 이름 서버를 추가합니다.
--dns
DNS 이름 서버를 명시적으로 지정하는 하나 이상의 옵션으로 컨테이너를 시작합니다 .
--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