Сделать DNS постоянным в контейнерах Docker [закрыто]

0
01.12.2018, 18:35
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. Добавьте сервер имен DNS (s )в файл resolv.conf на хосте.
  2. Запустить контейнер с одним или несколькими параметрами --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
1
28.01.2020, 02:41

Теги

Похожие вопросы