在主机上使用consul DNSparsing容器

目的:获取一个docker容器,使用主机提供的DNS,这是在另一个容器中运行的一个咨询代理,通过traefik反向代理访问可用的服务。

安装主机:Ubuntu 16.04.2 LTS

注册者将新容器注册到consul代理,traefik是负载平衡服务并使其可用的反向代理。 有一个通用的节点应用程序,当你点击“/”path时,它会返回“Hello World”

容器1。

docker run -d --net=host consul agent -dev 

容器2。

 docker run -d --name=registrator --net=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://localhost:8500 

容器3。

 docker run -d --net=host -p 8089:8080 -p 80:80 --name=traefik -v ~/projects/traefix/docker.toml:/etc/traefik/traefik.toml traefik 

容器4。

 docker run -P -d meep/node-web-app 

主机使用networkingpipe理器

主机设置为查询领事TLD的任何查询,它将parsing为领事docker容器

 /etc/NetworkManager/dnsmasq.d/10-consul server=/consul/127.0.0.1#8600 

我有/etc/NetworkManager/dnsmasq.d/docker-bridge.conf与以下configuration,这意味着它将监听泊坞networking接口上的DNS请求。

 listen-address=172.17.0.1 

目前在我的主机上,我可以做到以下几点

  1. dig node-web-app.service.consul返回127.0.0.1的IP地址
  2. curl http://node-web-app.service.consul/返回'Hello World'

到目前为止,在主机上工作的一切都很好。

我启动了一个容器

 docker run --dns=172.17.0.1 -it joffotron/docker-net-tools 

并运行dig node-web-app.service.consul它返回127.0.0.1,至less该dns部分工作。 很显然,如果我现在运行curl http://node-web-app.service.consul/ ,它将在dns查找指向127.0.0.1时中断,当它指向172.17.0.1

原谅我,我真的没有与docker+服务发现工作那么我能做些什么,所以容器的DNS正确指向172.17.0.1