2016-02-29 16 views
5

Il numero documentation about networking is currently è molto vago su questo: come si realizza uno docker-compose.ymlche crea una rete virtuale, lasciando che i servizi (contenitori) da esso definiti comunichino su quella rete?Come si definisce una rete in un file di definizione comporre docker versione 2?

In questo scenario, l'obiettivo non è affidarsi a una rete predefinita, per un insieme di contenitori definito per la finestra mobile-comporre. Piuttosto, la definizione di rete è autonoma nel file di definizione di composizione docker.

Con una rete predefinita, questa sotto funzionerebbe se l'applicazione in A usato il nome B come nome host per l'accesso all'applicazione confezionato all'interno B ascolto sulla sua porta 9000. Il host:port sarebbe usare per sarebbe B:9000 (più precisamente lo uri mongodb://B:9000 nel mio caso particolare).

foo: 
    net: my-pre-defined-network 
    container_name: A 
    image: foo 
bar: 
    net: my-pre-defined-network 
    container_name: B 
    image: bar 
    ports: 
    - "9000:9000" 

Ma il mio punto è la definizione di una rete all'interno della finestra mobile configurazione-composizione, senza assumere uno era a priori definito ...

TL; DR

Una rete predefinito viene creato automaticamente. Vedere la sezione iniziale di https://docs.docker.com/compose/networking/ per informazioni su come indirizzare i contenitori all'interno di questa rete.

+0

quale rete si desidera definire? –

+0

Uno che si connetterà tra due contenitori gestiti da docker-compose. Lo stesso host per ora. – matanster

risposta

8

Componi creerà una rete default per voi fino a quando si utilizza il formato della versione 2, ma se si desidera personalizzare le reti i documenti sono qui:

È possibile creare una sezione networks al livello superiore del file di Compose e farvi riferimento nella sezione networks di ciascun servizio. Ma non è necessario, basta utilizzare la rete predefinita come descritto nei commenti qui sotto.

+0

Non sono sicuro di quale sarebbe il nome host che un'applicazione contenuta dovrebbe utilizzare per contattare l'altro, su tale rete predefinita (il nome del contenitore e 'localhost' funzionano per quello). Moreso, nessuna rete creata in modo predefinito viene visualizzata in 'docker network ls' dopo l'esecuzione di' docker-compose up'. – matanster

+0

A meno che qualche strana immagine/componga il caching stia sventando i miei vari tentativi .. – matanster

+0

Se si utilizza il formato versione 2, verrà creata una rete chiamata 'projectname_default', dove projectname ha come valore predefinito il nome di base della directory del progetto. Si utilizza il nome del servizio come nome host a cui connettersi. Quindi nel tuo esempio 'foo' e' bar'. – dnephin