Utilizzo dell'interfaccia DNS di console all'interno di contenitori docker


3

Ho un agente console in esecuzione sul mio computer host e un paio di servizi all'interno di container docker. Sto usando 'gliderlabs / registrator' per scoprire questi servizi e registrarli con l'agente console locale.

L'agente console è configurato per accettare connessioni da qualsiasi luogo ( "client_addr": "0.0.0.0"opzione), cosa che posso "provare" facendo dig @172.17.42.1 -p 8600 someservice.service.consuldalla macchina host.

Il problema è che non riesco a fare lo stesso all'interno dei contenitori, la richiesta di scavo è scaduta e non curlci riesco nemmeno. Io passo --dns 172.17.42.1. Qualche idea?

Nota: voglio evitare l'uso --net=hostse possibile.

Grazie!

Risposte:


3

Stavo colpendo lo stesso blocco stradale e la tua configurazione e la mia sono molto simili (sto eseguendo il Console autonomo piuttosto che come un contenitore Docker).

Sono anche contrario all'utilizzo --net=host!!!.

Ciò che l'ha fatto funzionare nel mio caso è stato:

a) Ho creato un file config.jsonper Console e al suo interno ho impostato la ports.dsnproprietà per utilizzare la porta 53 (impostazione predefinita DNS).

Non è possibile utilizzare 8600 all'interno dei contenitori Docker, questo perché l' docker run --dnsargomento non consente di assegnare una porta.

b) Ho usato l'IP LAN (privato) dell'host come --dnsvalore. Ho provato con altri valori prima ( 0.0.0.0, IP pubblico e 127.0.0.1) ma quelli non funzionavano.

c) Opzionale: è possibile aggiungere --dns-search="service.consul"a in docker runmodo da poter avere nomi di dominio più brevi (cioè evitare di dover scrivere la service.consulparte).

Una volta all'interno del contenitore, è possibile eseguire un nslookup ubuntu.service.consulnome di servizio fornito per quel contenitore.

Note importanti :

  • È necessario esporre le porte (ovvero -Po -pflag) sul contenitore per registratorraccoglierle. Se non condividi una porta, registratorignorerai silenziosamente il contenitore.
  • È bello impostare un nome host (usando -hflag).

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.