能否通过docker-compose.yml配置Docker嵌入式DNS服务器的自定义A及SRV记录?
在Docker Compose中配置嵌入式DNS的自定义A记录和SRV记录
Docker的嵌入式DNS服务器不支持直接在docker-compose.yml中定义自定义SRV记录,但可以通过以下方式分别或同时实现A记录和SRV记录的配置:
1. 配置自定义A记录(使用extra_hosts)
如果只需要设置A记录,可以直接用extra_hosts字段,这是Docker官方支持的方式,会在容器的/etc/hosts中添加对应条目,实现类似DNS解析的效果:
version: '3.8' services: your-service: image: your-image:latest extra_hosts: - "myhost.mysuffix.local:114.123.456.789"
2. 同时配置A记录和SRV记录(自定义DNS服务器)
要添加SRV记录,必须搭建自定义DNS服务器(比如用dnsmasq),让Docker容器指向这个DNS服务来解析自定义记录:
步骤1:创建dnsmasq配置文件
新建dnsmasq.conf文件,添加需要的记录:
# 自定义A记录 address=/myhost.mysuffix.local/114.123.456.789 # 自定义SRV记录(格式:srv-host=服务名.域名,目标主机,端口,优先级,权重) srv-host=_myservice._tcp.mysuffix.local,myhost.mysuffix.local,8009,5,0
步骤2:编写docker-compose.yml
定义一个DNS服务容器,然后让其他服务指定使用这个DNS:
version: '3.8' services: custom-dns: image: andyshinn/dnsmasq:2.85 volumes: - ./dnsmasq.conf:/etc/dnsmasq.conf ports: - "53:53/tcp" - "53:53/udp" cap_add: - NET_ADMIN restart: always your-app-service: image: your-app-image:latest dns: - custom-dns # 其他服务配置...
这样,your-app-service容器内就能正常解析myhost.mysuffix.local的A记录,以及myservice.mysuffix.local的SRV记录了。
内容的提问来源于stack exchange,提问作者ontherocks
相关产品推荐
相关产品推荐

