2016-03-22 16 views
7

Dopo l'aggiornamento a Docker engine 1.10 (da 1.08) ho notato che la mia configurazione del proxy inverso non funziona più.Impossibile eseguire il ping dei contenitori Docker tramite nomi/nomi host

Tutte le mie app (incluso Nginx per proxy inversi) sono in container e comunicano tramite nomi di container. Ecco un esempio per gli host virtuali in parte Nginx:

server { 
    server_name jobs; 
    location/{ 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_pass http://jenkins:8080; 
    } 
} 

Ora, posso ping Jenkins contenitore dal contenitore Nginx solo tramite IP ma non più tramite nome del contenitore. Dato che gli IP vengono costantemente modificati a causa di aggiornamenti, ridistribuzioni, ecc. Esiste un modo migliore di rete per evitare la definizione degli IP nella configurazione del proxy inverso?

Legacy --link non è un'opzione in quanto vi sono molti contenitori.

+0

Ho aggiornato la risposta alla luce della prossima finestra mobile 1.12 e la sua modalità finestra mobile sciame. – VonC

risposta

1

È possibile controllare il network-scope alias fornito con docker network connect e docker run.

L'avvio di un contenitore con un alias consente al tuo NGinx di invertire il proxy con quell'alias nella sua configurazione.
In fase di runtime, questo alias verrà risolto nel contenitore avviato in seguito.

Vedere un esempio in "Docker Networking: Auto-discovering host names in a bridge network".
Si noti che è will need a key-value store per gestire il contenitore in una finestra mobile di livello 1.10+.


Nota (luglio 2016) con la finestra mobile 1.12 e la sua swarm mode, diventa ancora più semplice.
Si veda ad esempio "The beautiful networking stack in Docker Swarm mode"

La finestra mobile sciame definirà una rete sovrapposta e un negozio di valori-chiave per voi! I contenitori si vedranno.

Un altro esempio concreto: "NGINX as a Reverse Proxy for Docker Swarm Clusters"

Problemi correlati