2015-04-10 26 views
9

Dalla mia comprensione della finestra mobile compose/fig, creare un collegamento tra due servizi/immagini è uno dei motivi principali se non si desidera esporre le porte ad altri.Comprendere le porte e i collegamenti nella finestra mobile comporre

come qui db non espone alcuna porta ed è legata solo:

web: 
    build: . 
    links: 
    - db 
    ports: 
    - "8000:8000" 
db: 
    image: postgres 

Does web pensa db corre sul suo localhost? Mi collegherei da uno script/programma in web a localhost: 5432 (porta standard da postgresql) per ottenere una connessione al database?

E se questo è corretto, come è possibile modificare la porta da 5432 a 6432, senza esporre? dovrei semplicemente eseguire postgresql su una porta diversa?

Aggiornamento:

link utili dopo un po 'di ingresso:

http://docs.docker.com/userguide/dockerlinks/

https://docs.docker.com/compose/yml/#links

risposta

3

web pensa db piste sull'ospite punta la DOCKER_DB variabile ENV o qualcosa come quello. I tuoi servizi dovrebbero puntare a quella variabile (host), non a localhost.

Il contenitore db espone le porte (tramite EXPOSE) ai contenitori collegati, sempre in variabili. È possibile eseguire il db su qualsiasi porta che si desidera, a condizione che sia EXPOSEd.

9

docker-compose/fig è principalmente un cavallo di battaglia per l'avvio/gestione di più immagini contemporaneamente che dipendono in qualche modo l'una dall'altra.

per comprendere appieno il legami tra contenitori si dovrebbe sapere che c'è una voce host creato, di solito all'interno /etc/hosts di file, che mappa che hostname contenitore all'interno finestra mobile è riuscito rete a un indirizzo IP specifico. Quindi, se vuoi accedere a postgres db devi indicare il nome host db invece di localhost.

Per quanto riguarda le porte esposte, la maggior parte delle immagini ha già alcune porte esposte, quindi potrebbe essere il caso in cui si utilizza un'immagine e quella porta è esposta, è sempre possibile sostituirla con qualcos'altro.

Aggiornamento in Docker Componi 1.6.0+

Per impostazione predefinita Componi imposta una singola rete per la tua app. Ogni contenitore di un servizio si unisce alla rete predefinita ed è raggiungibile sia da altri contenitori su quella rete, sia individuabile da essi in un nome host identico al nome del contenitore. source

È possibile definire collegamenti tra i contenitori solo quando si vuole definire un alias ad un contenitore, in questo modo:

version: '2' 
services: 
    web: 
    build: . 
    links: 
     - "db:database" 
    db: 
    image: postgres 
Problemi correlati