Docker 配置 DNS 服务(Ubuntu)

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 容器的时候, Docker 用户会看到以下的警告:shell

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 使用一个默认的外部域名服务器。vim

为了不此警告,你能够给 Docker 容器指定一个DNS服务器。或者你能够禁用 NetworkManager 的 dnsmasq。不过当禁止 dnsmasq 可能使某些网络的DNS解析速度变慢。服务器

为 Docker 指定一个DNS服务器网络

  1. 使用具备sudo权限的用户来登陆你的Ubuntu。spa

  2. 打开并编辑 /etc/default/dockerrest

     $ sudo nano /etc/default/docker
    #这是网上传说的方法,可是最新的版本是没有nano的,也没有vim之类,vi会出现乱码。
    #用这个方法,重启后运行 apt-get update 经过:
    sudo echo DOCKER_OPTS="--dns 8.8.8.8" > /etc/default/docker
  3. 添加设置code

     DOCKER_OPTS="--dns 8.8.8.8"

    使用8.8.8.8替换如192.168.1.1的本地DNS服务器。你能够指定多个DNS服务器,多个DNS服务器使用空格分割例如server

     --dns 8.8.8.8 --dns 192.168.1.1

     

    警告:若是你正在使用的电脑须要链接到不一样的网络,必定要选择一个公共DNS服务器。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
相关文章
相关标签/搜索