mor*_*arc 5 networking dns docker consul
我的主机上运行着一个 consul 代理,并且在 docker 容器内运行着一些服务。我正在使用“gliderlabs/registrator”来发现这些服务并向当地领事代理注册它们。
领事代理被配置为接受来自任何地方的连接("client_addr": "0.0.0.0"
选项),我可以通过dig @172.17.42.1 -p 8600 someservice.service.consul
从主机进行“证明”。
问题是我似乎无法在容器内执行相同的操作,挖掘请求只是超时,我curl
也无法执行此操作。我确实通过了--dns 172.17.42.1
。有任何想法吗?
注意:如果可能的话我想避免使用--net=host
。
谢谢!
小智 5
我遇到了同样的障碍,并且你的设置和我的看起来非常相似(我独立运行 Consul,而不是作为 Docker 容器)。
我也反对使用--net=host
!
使它在我的案例中发挥作用的原因是:
a)我为 Consul 创建了一个config.json
,并在其中设置了属性ports.dsn
以使用端口 53(DNS 默认值)。
您不能在 Docker 容器内使用 8600,这是因为该docker run --dns
参数不允许您提供端口。
b)我使用主机的 LAN(专用)IP 作为值--dns
。我之前尝试过其他值(0.0.0.0
、公共 IP 和127.0.0.1
),但这些值不起作用。
c)可选:您可以添加--dns-search="service.consul"
到 ,docker run
以便您可以拥有更短的域名(即避免编写该service.consul
部分)。
进入容器后,您可以执行该容器的服务名称,nslookup ubuntu.service.consul
前提是该服务名称是该容器的服务名称。
重要笔记:
-P
或标志)以获取它们。如果不共享端口,将默默地忽略容器。-p
registrator
registrator
-h
标志)是很好的。希望这可以帮助!
归档时间: |
|
查看次数: |
4219 次 |
最近记录: |