Docker daemon及容器实例的DNS配置详解

Docker daemon及容器实例的DNS配置详解
2022-01-22 18:37 180阅读 0赞

Linux系统中,DNS解析器是一组C库的进程,用以访问DNS服务器。DNS解析器通过/etc/resolv.conf配置文件给出要访问的DNS服务器,配置文件修改后立刻生效,但系统重启后/etc/resolv.conf配置文件的内容回滚到初始状态。

Docker daemon的DNS配置

Docker daemon的配置有两种方式,一种是通过/etc/docker/daemon.json文件,另一种是通过dockerd的命令参数。

对于Docker daemon的DNS配置,二选一,不能同时以两种方式进行同一参数的配置,否则dockerd启动会失败。

  1. 配置/etc/docker/daemon.json文件的DNS属性
    {
    “dns”: [“8.8.8.8”, “8.8.4.4”, “2001:4860:4860::8888”, “2001:4860:4860::8844”],
    “dns-opts”: [“debug”],
    “dns-search”: [“example.com”],

    }
  2. dockerd命令的DNS参数

dockerd —dns 8.8.8.8 —dns-opt debug —dns-search example.com

docker run命令的DNS参数

在启动Docker容器实例的docker run命令中,也可以通过如下命令参数,为要创建的容器实例配置专用的DNS参数。

--dns
--dns-option或—dns-opt
--dns-search

docker run -d —dns 8.8.8.8 —dns-opt debug —dns-search example.com --name myContainer myImage:latest

Docker容器实例中解析DNS的顺序
  1. 首先,查找Docker daemon内置的DNS服务器127.0.0.11

  2. 其次,查找docker run创建容器实例时通过—dns参数设置的DNS服务器

  3. 再次,查找Docker daemon通过—dns参数,或/etc/docker/daemon.json文件设置的DNS服务器

  4. 又次,查找Docker宿主机上/etc/resolv.conf文件中配置的DNS服务器

  5. 最后,查找Google的DNS服务器,如8.8.8.8和8.8.4.4,2001:4860:4860::8888和2001:4860:4860::8844

参考链接:

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/configure-dns/

https://docs.docker.com/v17.09/engine/userguide/networking/configure-dns/

转自:https://www.dandelioncloud.cn/article/details/1484837542863372289,侵删

你可能感兴趣的:(docker,容器,运维)