2016-04-11 9 views
3

Wie Sie nach Docker 1.9 wissen, können wir Brücken erstellen, um Container zu verbinden.Docker: Wie man zwei Brücken verbindet

Ich habe zwei benutzerdefinierte Brücken erstellt: Brücke A 172.18.0.1 und Brücke B 172.19.0.1.

Jetzt habe ich einen container1 auf Brücke A und einen Container2 auf Brücke B namens "mailServer".

Der container1 muss container2 von einem DNS erreichen, wie soll ich das tun? Weil sie auf verschiedenen Brücken sind, so dass sie nicht miteinander reden können. Brauche ich einen Router und kann ich dies mit Docker erreichen?

Dies ist eine neue Funktion von Docker und ich habe nicht viele Informationen gefunden. Vielen Dank.

Antwort

3

Sie können versuchen, den veth Peer zu verwenden, so dass Sie zwei Brücken verbinden können. Stellen Sie sicher, dass Sie umbenannt sind und den Namen mit dem Namen haben, den Sie konfiguriert haben.

ip link add veth0 type veth peer name veth1 
ifconfig veth0 up 
ifconfig veth1 up 
brctl addif <D1-A-Bridge> veth0 
brctl addif <D2-A-Bridge> veth1 
0

Wenn Sie zwei Brücken verbinden möchten, können Sie ein Paar Patch-Ports mit offenem V-Schalter verwenden. Das folgende Beispiel erstellt Brücken br0 und br1, fügt eth0 und tap0 zu br0 hinzu, fügt tap1 zu br1 hinzu und verbindet dann br0 und br1 mit einem Paar Patch-Ports.

ovs-vsctl add-br br0 
    ovs-vsctl add-port br0 eth0 
    ovs-vsctl add-port br0 tap0 
    ovs-vsctl add-br br1 
    ovs-vsctl add-port br1 tap1 
    ovs-vsctl \ 
     -- add-port br0 patch0 \ 
     -- set interface patch0 type=patch options:peer=patch1 \ 
     -- add-port br1 patch1 \ 
     -- set interface patch1 type=patch options:peer=patch0 
4

container2 So verbinden Sie es auch

$ docker network connect bridgeB container1 

Diese container1 von IP-Adresse container2 verbinden, damit bridgeB container1 kann verbinden, würde DNS-Namen noch manuell afaik aktualisiert werden müssen. Weitere Informationen finden Sie im Docker-Netzwerkhandbuch here.