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

本文详细介绍了Docker daemon和容器实例的DNS配置,包括通过daemon.json文件和dockerd命令参数的方式,以及docker run命令的DNS参数设置。解析顺序包括Docker内置DNS、容器启动时设置的DNS、daemon配置的DNS、宿主机resolv.conf和默认公共DNS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1. 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

2. docker run命令的DNS参数

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

  • --dns
  • <
### Docker DNS 配置方法 在 Docker配置 DNS 的主要目的是让容器能够解析外部网络中的主机名。以下是几种常见的配置方法及其参数说明。 #### 方法一:全局配置 DNS 可以通过修改 `daemon.json` 文件来设置全局的 DNS 服务器地址。此文件通常位于 `/etc/docker/daemon.json` 路径下。如果该文件不存在,则需要手动创建它[^2]。 ```json { "dns": ["8.8.8.8", "8.8.4.4"] } ``` 完成编辑后,保存并重启 Docker 守护进程以使更改生效: ```bash sudo systemctl restart docker ``` 这种方法适用于所有新启动的容器,默认会继承指定的 DNS 设置[^3]。 --- #### 方法二:启动时配置 DNS 参数 可以在运行容器时通过 `-dns` 或者更推荐使用的 `--dns` 参数临时为某个特定容器指定 DNS 服务器[^4]。 例如: ```bash docker run --name my_container --dns=8.8.8.8 -it ubuntu bash ``` 上述命令会在名为 `my_container` 的容器中使用 Google 提供的公共 DNS (8.8.8.8)[^1]。 注意,这种方式仅影响当前正在启动的那个单独容器实例,并不会改变其他已存在的或者未来新建的任何其它容器的行为模式。 --- #### 方法三:默认 DNS 配置 如果没有显式定义自定义DNS选项,那么Docker将会依赖宿主机的操作系统的标准名称解析机制来进行操作。这意味着除非特别指定了替代方案(如前两种情况),否则所有的请求都将遵循宿主机器上的 /etc/resolv.conf 文件所记录的信息作为依据执行查询动作. 验证某具体容器内部实际应用到哪些名字服务器可借助如下指令完成: ```bash docker run -it --rm ubuntu cat /etc/resolv.conf ``` 这一步骤可以帮助确认之前所做的调整是否成功落实到位以及准确无误地被采纳运用到了目标环境当中去。 --- ### 总结 综上所述,在 Docker 中有多种途径可供选择用来设定合适的域名系统解决方案满足不同场景下的需求。既可以从整体层面出发统一规划部署资源利用效率更高的策略;也可以针对个别特殊情况采取更为精细灵活的办法加以应对处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值