我有container1,我编辑了/etc/resolv.conf
,把nameserver 8.8.8.8
放到了ping google.com
。效果很好。但是我需要使这个永久化,当我重新启动我的码头的容器时,使用
sudo docker restart container1
我不能再通过我的容器平google.com了。
我尝试过他们在3-7年前在这里发布的内容。它不起作用。我的Ubuntu版本是18.04。
发布于 2018-12-01 17:19:37
正如在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
https://unix.stackexchange.com/questions/485361
复制相似问题