So che per impostazione predefinita la finestra mobile crea un bridge virtuale docker0
e tutta la rete del contenitore è collegata a docker0
.Qual è la relazione tra docker0 e eth0?
Come illustrato sopra:
- contenitore
eth0
è accoppiato convethXXX
vethXXX
è legatadocker0
stessa come una macchina collegato a commutare
Ma che relazione tra docker0
e host eth0
? In particolare:
- Quando un pacchetto scorre dal contenitore per docker0, come fa a sapere che sarà trasmessa al eth0, e quindi al mondo esterno?
- Quando un pacchetto esterno arriva a eth0, perché viene inoltrato a docker0 quindi contenitore? invece di elaborarlo o rilasciarlo?
Domanda 2 può essere fuorviante, terrò lì e spiegato un po 'più:
- È un pacchetto di ritorno che siglata dal contenitore (domanda 1): dal lato esterno non conosce la rete container, il pacchetto viene inviato all'host
eth0
. Come viene inoltrato al contenitore? Voglio dire, ci deve essere un posto dove archiviare le informazioni, come posso verificarlo?
Grazie in anticipo!
Dopo aver letto la risposta e articoli rete ufficiale, trovo il seguente schema più accurato che docker0
e eth0
non ha collegamento diretto, invece possono inoltrare i pacchetti:
http://dockerone.com/uploads/article/20150527/e84946a8e9df0ac6d109c35786ac4833.png
Grazie per la spiegazione. Posso metterlo in questo modo: quando un pacchetto arriva a 'docker0' dal contenitore, non sa né preoccuparsi di' eth0'. Invece il kernel prende il sopravvento e decide cosa fare con esso. Di default il kernel controlla la tabella di routing, di solito sarà inviata a 'eth0', quindi a SNAT, quindi al mondo esterno? – cizixs
Sì, routing standard Linux e NAT. – Matt