You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Bind9 Docker容器配置为其他容器的DNS服务器

解决Docker容器指定静态IP Bind9 DNS及Traefik桥接通信问题

一、让Step-CA/Traefik稳定指向Bind9静态IP作为DNS

方法1:全局配置所有Docker容器默认DNS

  1. 编辑Docker守护进程配置文件:
    vi /etc/docker/daemon.json
    
  2. 添加Bind9的静态IP到DNS列表(替换192.168.0.X为你的Bind9实际静态IP):
    {
      "dns": ["192.168.0.X"]
    }
    
  3. 重启Docker服务生效:
    systemctl restart docker
    
    之后新启动的所有容器都会默认使用该DNS,包括Step-CA和Traefik。

方法2:单独为Step-CA/Traefik指定DNS(不影响全局)

针对docker run启动的容器:

启动时添加--dns参数:

# Step-CA示例
docker run --dns 192.168.0.X [其他启动参数] step-ca-image

# Traefik示例
docker run --dns 192.168.0.X [其他启动参数] traefik-image

针对docker-compose部署的容器:

在服务配置中添加dns字段:

services:
  step-ca:
    image: step-ca-image
    dns:
      - 192.168.0.X
    # 其他Step-CA配置

  traefik:
    image: traefik-image
    dns:
      - 192.168.0.X
    # 其他Traefik配置

二、让Traefik与br0桥接网络的容器通信

方式1:将Traefik加入已有的br0桥接网络

如果br0是Docker管理的外部桥接网络,在启动Traefik时指定该网络:

docker run方式:

docker run --network br0 [其他启动参数] traefik-image

docker-compose方式:

services:
  traefik:
    image: traefik-image
    networks:
      - br0
    # 其他Traefik配置

networks:
  br0:
    external: true
    name: br0

方式2:让Traefik使用host网络(如果br0是宿主机的物理桥接)

如果br0是宿主机的物理桥接接口,可让Traefik直接使用host网络模式,这样它能直接访问宿主机桥接网络上的所有设备:

# docker run示例
docker run --network host [其他启动参数] traefik-image
# docker-compose示例
services:
  traefik:
    image: traefik-image
    network_mode: host
    # 其他Traefik配置

验证配置

  1. 进入Step-CA容器,测试私有域名解析:

    docker exec -it step-ca-container-name nslookup 你的私有域名
    

    若返回正确的Unraid服务器IP,说明DNS配置生效。

  2. 进入Traefik容器,测试与br0上容器的连通性:

    docker exec -it traefik-container-name curl http://br0-container-ip:容器端口
    

    若能正常返回内容,说明网络通信正常。

内容的提问来源于stack exchange,提问作者Brandon Piña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:03:28