首页主机资讯如何在Ubuntu Overlay中配置DNS

如何在Ubuntu Overlay中配置DNS

时间2025-11-28 19:30:04发布访客分类主机资讯浏览295
导读:Ubuntu Overlay 场景下的 DNS 配置指南 先明确你的 Overlay 类型 若指的是 Docker Swarm 的 Overlay 网络(跨主机容器通信),容器内的 DNS 由 Docker 的内置 DNS 服务(通常为...

Ubuntu Overlay 场景下的 DNS 配置指南

先明确你的 Overlay 类型

  • 若指的是 Docker Swarm 的 Overlay 网络(跨主机容器通信),容器内的 DNS 由 Docker 的内置 DNS 服务(通常为 127.0.0.11)自动提供,服务发现通过服务名解析;你只需保证宿主机网络与 Docker 守护进程正确即可。
  • 若指的是 OverlayFS(联合文件系统,用于分层存储),它不处理网络与 DNS;DNS 仍应在宿主机或容器内部按常规方式配置。

Docker Swarm Overlay 的 DNS 配置

  • 基本思路:让容器通过 Docker 的内置 DNS 解析服务名,必要时为容器指定自定义 DNS 服务器或搜索域。
  • 操作步骤:
    1. 创建或加入 Swarm 后,创建 Overlay 网络: docker network create --driver overlay my_overlay
    2. 部署服务时显式指定 DNS(可选,默认使用 Docker 内置 DNS 127.0.0.11): docker service create
      –name web
      –network my_overlay
      –dns 8.8.8.8 --dns 1.1.1.1
      –dns-search cluster.local
      nginx:latest
    3. 进入容器验证解析是否走 127.0.0.11: docker exec -it < 容器ID> sh cat /etc/resolv.conf nslookup tasks.web
  • 常见要点:
    • 服务名解析依赖 Docker 的内置 DNS;自定义 --dns 仅影响容器内对“外部域名”的解析。
    • 跨主机通信需确保节点间网络可达(如 VXLAN 端口 4789/UDP 未被防火墙拦截)。

宿主机或容器使用 systemd-resolved 的持久化 DNS 配置

  • 适用于需要在宿主机或容器里自定义 DNS 的场景(如内网域名、DoT/DoH)。
  • 宿主机配置(推荐):
    1. 编辑 /etc/systemd/resolved.conf: sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.bak sudo nano /etc/systemd/resolved.conf 写入示例: [Resolve] DNS=192.168.10.10 8.8.8.8 FallbackDNS=1.1.1.1 Domains=~corp.local DNSOverTLS=yes
    2. 启用并重启服务: sudo systemctl enable --now systemd-resolved sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf sudo systemctl restart systemd-resolved
    3. 验证: resolvectl status
  • 容器配置(需要时):
    • 运行容器时注入自定义 DNS 与搜索域(示例): docker run -it --rm --dns 192.168.10.10 --dns-search corp.local ubuntu:24.04 cat /etc/resolv.conf
    • 若容器使用 systemd-resolved(如基于 systemd 的镜像),可在容器内同样编辑 /etc/systemd/resolved.conf 并重启服务。

使用 Netplan 配置宿主机网络与 DNS(Ubuntu 18.04+ 常见)

  • 编辑 /etc/netplan/*.yaml(如 00-installer-config.yaml),在对应网卡下添加 nameservers: network: ethernets: eth0: addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [192.168.10.10, 8.8.8.8] search: [corp.local] version: 2
  • 应用配置并验证: sudo netplan apply resolvectl status
  • 提示:
    • 将内网 DNS 放在列表首位,确保内网域名优先解析。
    • 修改前先备份原文件,避免语法缩进错误导致网络中断。

快速排查清单

  • 查看当前生效的 DNS 配置:resolvectl status;容器内可 cat /etc/resolv.conf 确认是否为 127.0.0.11(Docker 内置 DNS)。
  • 解析测试:nslookup 或 dig 目标域名;若期望走内网 DNS,确认首跳是否为内网 DNS 服务器。
  • Swarm 场景:确认服务已连接到正确的 Overlay 网络,节点间 4789/UDP 未被拦截,服务名拼写正确。
  • 变更后未生效:重启 systemd-resolved(sudo systemctl restart systemd-resolved)或重新部署服务(docker service update --force )。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu Overlay中配置DNS
本文地址: https://pptw.com/jishu/759335.html
Ubuntu Overlay支持哪些存储驱动 如何更新Ubuntu Overlay到最新版本

游客 回复需填写必要信息