Consul可以使用Docker for Windows在Docker容器中运行吗?

时间:2018-04-04 08:13:46

标签: docker consul docker-for-windows

我正在尝试让Consul在Docker容器中工作,但是使用Docker for Windows和Linux容器。我正在使用official Consul Docker image。文档说明容器必须使用--net=host来获得Consul的共识和八卦协议。

据我所知,问题是Docker for Windows使用Linux VM,以及" host"容器不是实际的主机,而是VM。我找不到-bind-client-advertise参数(IP地址)的组合,因此:

  • 其他主机上的其他Consul代理可以使用主机的IP地址连接到本地代理。
  • 同一主机上的其他容器化服务可以查询本地代理的REST接口。

每当我通过-advertise在局域网中传递主机IP地址时,我都会在容器中收到这些错误:

  

2018/04/03 15:15:55 [警告]领事:错误从" linuxkit-00155d02430b"获取服务器健康状况:rpc错误获取客户端:无法获得conn:拨打tcp   127.0.0.1:0->10.241.2.67:8300:connect:无效参数2018/04/03 15:15:56 [警告] consul:错误从" linuxkit-00155d02430b"上下文获取服务器健康状况超过截止日期

此外,其他主机上的其他代理无法连接到该代理。

在该地址上使用-bind失败 - 我的猜测是,由于容器在Linux VM中,因此主机的地址不是容器的主机地址,因此不能受约束。

我尝试了-bind-client-advertise的各种组合,使用0.0.0.0127.0.0.110.0.75.2等地址(地址为Docker虚拟交换机)和主机的IP,但无济于事。

我现在想知道这是否可以实现。我已经尝试了很长一段时间了,我绝望了。任何建议将不胜感激!

我在不使用--net=host的情况下尝试了整个过程,一切正常。我可以跨主机连接代理,我可以从其他容器化应用程序查询本地代理REST接口...... --net=host对Consul的运行真的至关重要吗?

0 个答案:

没有答案