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
相關文章
相關標籤/搜索