红联Linux门户
Linux帮助

Docker配置DNS服务(Ubuntu)

发布时间:2016-10-31 11:26:25来源:linux网站作者:openthings
Docker在Ubuntu的初始安装竟然无法访问网络,需要配置DNS服务,要不更新软件啥都不能使了。参考这里的方法可以搞定。
 
Docker 配置 DNS 服务(Ubuntu)
无论是Ubuntu还是Ubuntu 桌面繁衍版在系统运行的时候都是使用/etc/resolv.conf配置文件中的127.0.0.1作为域名服务器(nameserver)。NetworkManager设置dnsmasq使用真实的dns服务器连接,并且设置 /etc/resolv.conf的域名服务为127.0.0.1。
在桌面环境下使用这些配置来运行 docker 容器的时候, Docker 用户会看到如下的警告:
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
该警告是因为 Docker 容器不能使用本地的DNS服务。相反 Docker 使用一个默认的外部域名服务器。
为了避免此警告,你可以给 Docker 容器指定一个DNS服务器。或者你可以禁用 NetworkManager 的 dnsmasq。不过当禁止 dnsmasq 可能使某些网络的DNS解析速度变慢。
 
为 Docker 指定一个DNS服务器
1.使用具有sudo权限的用户来登录你的Ubuntu。
2.打开并编辑 /etc/default/docker
$ sudo nano /etc/default/docker
#这是网上传说的方法,但是最新的版本是没有nano的,也没有vim之类,vi会出现乱码。
#用这个方法,重启后运行 apt-get update 通过:
sudo echo DOCKER_OPTS="--dns 8.8.8.8" > /etc/default/docker
3.添加设置
DOCKER_OPTS="--dns 8.8.8.8"
使用8.8.8.8替换如192.168.1.1的本地DNS服务器。你可以指定多个DNS服务器,多个DNS服务器使用空格分割例如
--dns 8.8.8.8 --dns 192.168.1.1
警告:如果你正在使用的电脑需要连接到不同的网络,一定要选择一个公共DNS服务器。
4.保存关闭文件。
5.重启 Docker 进程
$ sudo restart docker
上面的方法重启失败,换这个:
sudo service docker stop
sudo service docker start
然后,就可以了。
 
或者,作为替代先前的操作过程,禁止NetworkManager中的dnsmasq(这样会使你的网络变慢)
1.打开和编辑 /etc/default/docker
$ sudo nano /etc/NetworkManager/NetworkManager.conf
2.注释掉 dns = dsnmasq:
dns=dnsmasq
3.保存关闭文件
4.重启NetworkManager 和 Docker
$ sudo restart network-manager $ sudo restart docker
 
升级Docker
在wget的时候使用-N参数来安装最新版本的Docker:
$ wget -N https://get.docker.com/ | sh
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25586.html