2014-07-02 10 views
14

I have jolly dns puntato al mio server, ad es. * .domain.comInstradare il traffico verso un contenitore finestra mobile basato sul sottodominio

Mi piacerebbe indirizzare ogni sottodominio al proprio contenitore di finestra mobile. In modo che box1.domain.com vada al contenitore docker appropriato. Questo dovrebbe funzionare per qualsiasi traffico principalmente HTTP e SSH.

O forse la porta può far parte del sottodominio, ad es. 80.box1.domain.com. Avrò molti container docker in modo che la soluzione debba essere dinamica e non codificata per ogni contenitore.

risposta

5

Sono andato con interlock per indirizzare il traffico http utilizzando nginx plugin. Ho optato per l'utilizzo di una porta casuale per ogni connessione SSH in quanto non riuscivo a farlo funzionare utilizzando solo il sottodominio.

0

La soluzione più semplice sarebbe utilizzare il metodo RewriteMap di mod_rewrite Apache. È molto performante se usato su un file di testo, ma può chiamare uno script se lo si desidera. C'è another StackOverflow answer che copre abbastanza bene la variante di script.

Se si desidera evitare Apache, i bravi ragazzi su dotCloud hanno creato Hipache per eseguire il routing dei propri servizi PaaS. Hanno anche provato documented the different things prima di costruire la propria soluzione. Ho trovato un riferimento a tsuru.io usando hipache esattamente per il routing ai contenitori docker, in modo da convalidarlo definitivamente a questo scopo.

+0

Ecco un collegamento alla menzione tsuru.io a cui ho fatto riferimento: [tsuru.io] (http://docs.tsuru.io/en/0.4.0/provisioners/docker/architecture.html). –

+0

Inoltre, ecco alcune informazioni su come eseguire il reverse proxy dinamico con nginx e dnsmasq, anche se trovo un po 'strano: [nginx + dnsmasq] (http://www.cmdln.org/2009/07/12/transparent_dynamic-reverse -proxy-with-nginx /) –

+1

Dai anche un'occhiata alla seguente domanda StackOverflow: http://stackoverflow.com/questions/18497564/assigning-vhosts-to-docker-ports?rq=1 –

1

Un'altra soluzione sarebbe utilizzare https://github.com/jwilder/nginx-proxy.

Questo strumento inoltra automaticamente richieste al contenitore appropriato (in base a sottodominio tramite la variabile d'ambiente contenitore VIRTUAL_HOST).

Per esempio, se si desidera reindirizzare box1.domain.com ad un contenitore, è sufficiente impostare il VIRTUAL_HOST variabile d'ambiente contenitore a "box1.domain.com".

Ecco un tutorial dettagliato che ho scritto a riguardo: http://blog.florianlopes.io/host-multiple-websites-on-single-host-docker.

+0

Buono a sapersi, funziona in modo simile all'interblocco. Facilita SSH? –

+0

Sì, sembra. Non so in che modo potrebbe facilitare SSH poiché il proxy Nginx gestisce le richieste HTTP. –

+0

Se si desidera utilizzare SSH nei contenitori Docker utilizzando i sottodomini, penso che sia possibile aggiungere una regola DNS CNAME che punta al proprio IP host. L'esposizione della porta del contenitore SSH all'host (da qui al pubblico), ad esempio 1020, consente di accedere a SSH nel contenitore utilizzando il sottodominio: ssh -p 1020 sub.domain.com. –

1

la mia risposta potrebbe arrivare in ritardo ma quando si utilizza la finestra mobile non è necessario ssh per connettersi ai contenitori. con il comando docker exec, è possibile eseguire il comando shell direttamente nel contenitore in esecuzione.

ecco il mio consiglio utilizzare il contenitore nginx proxy elencato all'inizio per la configurazione dei sottodomini. ed esegui portainer sul tuo host per avere una panoramica visuale dei tuoi Contenitori, immagini, registri e persino eseguire comandi in esso attraverso il gui del portainer.

Problemi correlati