Recentemente ho avuto lo stesso problema e risolto utilizzando Network Contenitori :
- iniziare il mio contenitore di 'servizio' che voglio essere disponibili sul IP pubblico
- creare un nuovo contenitore 'rete' che è collegato con il serv contenitore del ghiaccio e fa il percorso verso le porte esposte dal container di servizio. Questo contenitore avrà un'interfaccia di rete aggiuntiva collegata all'host in modo che possa acquisire un IP da DHCP.
- Creare un bridge di rete dall'host Docker al contenitore utilizzando jpetazzo's Pipework (https://github.com/jpetazzo/pipework)
- Il contenitore di rete acquisisce un indirizzo da DHCP.
Da questo punto il contenitore di rete è disponibile sulla rete e indirizza le porte al contenitore di servizi. Il vantaggio principale è che il contenitore 'servizio' non deve conoscere l'IP pubblico, il DHCP, ecc. In questo modo ogni contenitore in esecuzione può essere reso pubblico sulla rete.
Per comodità, ho creato uno script che fa tutto questo in una volta. Fare un contenitore in esecuzione disponibile su un IP pubblico è semplice come:
create-network-container.sh webserver ens32
In questo caso si avrebbe bisogno di avere un contenitore di esecuzione chiamato 'webserver', e un'interfaccia di rete sul 'ens32' host.L'interfaccia è necessaria per creare il bridge nel contenitore di rete.
Lo script, informazioni più dettagliate ed esempi sono disponibili su: https://github.com/jeroenpeeters/docker-network-containers
fonte
2014-11-18 20:02:59
Avete considerato la possibilità di accoglienza --net =? vedere: https://docs.docker.com/articles/networking/#container-networking –
Che cosa intendi inviando dinamicamente i pacchetti in entrata? Supponendo che l'API di back-end risponda a HTTP, per quanto riguarda l'impostazione di un proxy HTTP che possa gestire anche altre cose, ad es. Offload SSL ecc. – andi5