Как поясняется в разделе Службы 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 внутрь контейнера, у вас есть два варианта:
--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