6

Specifiche Server:rete ponte Docker, chiamate HTTP tra contenitori molto lento (dopo l'aggiornamento finestra mobile)

os: Ubuntu 14.04 
docker: 1.10.2 
docker-compose: 1.6.0 

Proprio di recente aggiornato 1,9-1,10 e ha aggiunto finestra mobile-composizione (se non utilizzano comporre ancora comunque). Il problema di lentezza non si è verificato prima dell'aggiornamento.

anche Docker è configurato con il mio IP del DNS e procura in questo modo in '/ etc/default/finestra mobile'

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns 138.XX.XX.X" 
export http_proxy="http://proxy.myproxy.com:8888/" 

(mio IP non viene completamente scritto lì, usando solo una X per la domanda)

ho due contenitori (container_a, container_b) entrambi i server HTTP in esecuzione (Node.JS), entrambi i contenitori sono in esecuzione su una rete a ponte (--net = mynetwork) I creati attraverso:

docker network create mynetwork 

I due contenitori rendono HTTP chiamate tra loro usando l'nome_contenitore come "host" per le chiamate HTTP in questo modo:

container_b:3000/someurl 

Queste chiamate effettuate tra i due contenitori sulla rete a ponte finestra mobile sta assumendo un lunghissimo tempo di completamento (~ 5 secondi). Queste chiamate di solito scorrono sotto i 100 ms.

Quando cambio il networking da --net = mynetwork su quei contenitori e li eseguo entrambi come --net = host, mentre modifica anche le mie chiamate http per utilizzare "localhost" come host al posto del nome del contenitore e esponendo le loro porte tramite un flag -p ... Le chiamate vengono eseguite nel tempo previsto di < 100 ms.

Sembra che la rete di docker bridge stia causando molto tempo alle mie chiamate tra container.

Qualche idea di dove posso cercare di diagnosticare/correggere questo problema?

risposta

4

Questo problema era il risultato di una modifica a un DNS interno rilasciato come parte della finestra mobile 1.10.

Maggiori informazioni sul può essere trovato qui: https://github.com/docker/docker/issues/20661

ho attivato la modalità di debug sul demone e guardato attraverso il registro come ho fatto richieste. Ho potuto vedere prima provare "8.8.8.8" prima di passare a "8.8.4.4" e poi finalmente arrivare all'IP DNS che ho aggiunto per il mio host e alla risoluzione. La mia ipotesi è che il mio proxy aziendale stia causando il blocco e la fine delle prime due richieste (8.8 ..), causando la lentezza di risoluzione all'IP corretto, che era il terzo nell'elenco.

La mia soluzione era di cambiare l'ordine DNS nel mio file/etc/default/docker per avere il mio IP interno prima.

DOCKER_OPTS="--dns 138.XX.XX.X --dns 8.8.8.8 --dns 8.8.4.4 " 

Questo sembra risolvere il nostro problema quando si risolve le nostre richieste HTTP, in base CONTAINER_NAME tra i contenitori prima di che DNS IP host.

+0

Hai trovato quel file all'interno di un contenitore? – Notflip

+0

@Notflip '/ etc/default/docker' è il file di configurazione del daemon docker. Vive sulla macchina host. –