我正在尝试使用“使用Docker”(第11章)中的示例设置一个consul代理。该示例建议运行此命令以设置其中一个consul节点:
docker run -d --name consul -h consul-1 \
-p 8300:8300 -p 8301:8301 -p 8301:8301/udp \
-p 8302:8302/udp -p 8400:8400 -p 8500:8500 \
-p 172.17.42.1:53:8600/udp \
gliderlabs/consul agent -data-dir /data -server \
-client 0.0.0.0 \
-advertise $HOSTA -bootstrap-expect 2
我假设-p 172.17.42.1:53:8600/upp
行使用为作者工作的IP地址将容器的DNS服务与consul节点链接起来。我应该在这里使用什么IP地址?
答案 0 :(得分:1)
看起来172.17.42.1
是docker 1.8在容器连接到主机时使用的默认桥接地址。这在1.9中有所改变,对我来说似乎是172.17.0.1
- 虽然我不知道这是否有保障。
答案 1 :(得分:0)
您似乎正在运行示例设置,因此如果将其公开给localhost 127.0.0.1则更好。这是一个DNS服务,只要您使用正确的DNS端口发出dig命令,它就会起作用。例如,以下将对端口8600执行:
dig @127.0.0.1 -p 8600 stackoverflow.service.consul
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.55.amzn1 <<>> @127.0.0.1 -p 53 tracker.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57167
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;stackoverflow.service.consul. IN A
;; ANSWER SECTION:
stackoverflow.service.consul. 0 IN A 10.X.X.X
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 7 11:29:01 2017
;; MSG SIZE rcvd: 56
如果您希望它在默认DNS端口上工作,以便可以直接处理查询。您可以使用dnsmaq或以下链接中列出的任何方法进行DNS转发: