2017-07-11 3 views
4

Je suis en train de faire un conteneur pour consul et il échoue après cette sortie, drôle, je ne pense pas vraiment une erreurconteneur consul sort avec une erreur de version du protocole

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

suivant est la commande J'utilise:

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 

Il est un seul nœud nouvelle installation avec la dernière version de registre, donc il n'y a pas de décalage de mise à niveau ou une version avec un agent/client qui se passe ici.

Répondre

1

Deux choses à réparer. Tout d'abord, l'argument de volume -v doit être pour la commande docker, et non pour la commande consul. Déplacer vers la droite place:

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 

les inverser également (ils sont/hôte/dir:/conteneur/dir)

En second lieu, par le consul par défaut ne peut pas écouter les ports privilégiés (soit 53) . Voir ceci: https://www.consul.io/docs/guides/forwarding.html, donc supprimer le -dns-port 53 et mettre en œuvre une approche qui leur recommande:

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 

Je recommande le DNSMasq setup, il est facile à mettre en œuvre.

+0

Merci de prendre le temps répondre. J'ai effectivement regardé le document et j'ai essayé de suivre l'approche du récurseur. Il est à noter que, par défaut, Consul ne résout pas les enregistrements DNS en dehors du fichier .consul. zone, sauf si l'option de configuration des récurrents a été définie. J'ai donc ajouté que dans la commande, j'ai collé dans la question d'origine sous le nom de -recursors 8.8.8.8 mais cela n'a pas aidé non plus. Toute aide à ce sujet? Je dois garder toute la configuration dans des conteneurs seulement. –

0

@Robert D'accord, je pense que nous nous sommes aussi un peu éloignés du sujet. Le vrai problème est le message qu'il montre et se termine immédiatement après cela.

J'ai essayé votre exemple et donne le même message/erreur (ne pense pas que ce soit une erreur si)

[[email protected] 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 'X.X.X.X' 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) 
[[email protected] user]# docker container ls | grep consul-server 
[[email protected] user]# 

Même chose pour recursors exemple:

[[email protected] 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 'X.X.X.X' 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) 
[[email protected] user]# docker container ls | grep consul-server 
[[email protected] user]# 
+0

Vous utilisez toujours le '--dns-port = 53' dont j'ai dit que c'est le problème – Robert

+0

Ici, il est sans --dns-port = 53 et toujours le même problème. MacBook-Pro-2: .ssh jagatveer $ conteneur docker run --net host --name consul-serveur -e 'CONSUL_LOCAL_CONFIG = {"skip_leave_on_interrupt": true}' -e CONSUL_BIND_INTERFACE = 'eth0' consul agent - serveur -client 0.0.0.0 -bootstrap-attend 1 -ui -datacenter dc1 -v "/ var/lib/consul" -données-dossier/var/lib/consul Consul v0.7.0 Protocole 2 parlé par défaut, comprend 2 à 3 (l'agent utilisera automatiquement le protocole> 2 pour parler aux agents compatibles) ' –

+1

Veuillez revoir ma réponse. J'ai aussi dit que le -v est au mauvais endroit ... – Robert