consul容器退出时出现协议版本错误

我正在为领事做一个容器,而且这个输出一直没有成功,好笑,我真的不认为这是一个错误

Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents) 

以下是我正在使用的命令:

 docker container run --net host --name consul-server -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -client 0.0.0.0 -dns-port 53 -bootstrap-expect 1 -ui -datacenter dc1 -v "/var/lib/consul:/consul/data" -data-dir /var/lib/consul 

这是一个单一的节点全新安装与registry的最新版本,所以没有升级或版本不匹配与任何代理/客户端在这里发生。

两件事情要解决。 首先, -v卷参数必须用于docker命令,而不是consul命令。 把它移到正确的地方:

 docker container run -v "/consul/data:/var/lib/consul" -data-dir /var/lib/consul --net host --name consul-server -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -client 0.0.0.0 -dns-port 53 -bootstrap-expect 1 -ui -datacenter dc1 

也反转他们(他们是/主机/目录:/容器/目录)

其次,默认情况下领事不能听特权端口(即53)。 看到这个: https : -dns-port 53 ,所以删除-dns-port 53并实施他们build议的任何方法:

 docker container run -v "/consul/data:/var/lib/consul" -data-dir /var/lib/consul --net host --name consul-server -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -client 0.0.0.0 -bootstrap-expect 1 -ui -datacenter dc1 

我推荐DNSMasq设置 ,这很容易实现。

@罗伯特好吧,我想我们在这里也谈了一些话题。 真正的问题是它在这之后performance出来的信息。

我试过你的例子,它给出了相同的消息/错误(不要以为这是一个错误,虽然)

 [root@ip-XXXX user]# docker container run --net host --name consul-server -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -client 0.0.0.0 -dns-port 53 -bootstrap-expect 1 -ui -datacenter dc1 -v "/var/lib/consul:/consul/data" -data-dir /var/lib/consul ==> Found address 'XXXX' for interface 'eth0', setting bind option... Consul v0.8.5 Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents) [root@ip-XXXX user]# docker container ls | grep consul-server [root@ip-10-201-14-34 user]# 

同样的recursors例子:

 [root@ip-XXXX user]# docker container run --net host --name consul-server -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE='eth0' consul agent -server -client 0.0.0.0 -dns-port 53 -bootstrap-expect 1 -ui -datacenter dc1 -v "/var/lib/consul:/consul/data" -data-dir /var/lib/consul -recursers 8.8.8.8 ==> Found address 'XXXX' for interface 'eth0', setting bind option... Consul v0.8.5 Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents) [root@ip-XXXX user]# docker container ls | grep consul-server [root@ip-10-201-14-34 user]#