Auf einem Debian-Stretch-Host (verbunden mit einem physischen LAN) habe ich eine neue Docker-Installation (v18.09) mit einem Datenbankcontainer (dem Host zugeordneter Port) und führe KVM / libvirt mit einigen Debian-Stretch-VMs aus. Ich kann über das LAN auf den Docker-Container und die VMs zugreifen (abhängig von der Konfiguration über den SSH-Tunnel oder direkt), habe jedoch Probleme, über die VMs auf den Docker-Container zuzugreifen.
# brctl show
bridge name bridge id STP enabled interfaces
br-f9f3ccd64037 8000.0242b3ebe3a0 no
docker0 8000.024241f39b89 no veth35454ac
virbr0 8000.525400566522 yes virbr0-nic
Nachdem ich tagelang gelesen hatte, fand ich in diesem Beitrag eine sehr überzeugende Lösung Docker und KVM mit einer Brücke ( Original ), die ich nicht zur Arbeit brachte. Die Lösung schlägt vor, Docker mit einem einzeiligen Konfigurationscode daemon.json zu initiieren, um die KVM-Standardbrücke zu verwenden. Wie schön wäre das! Gibt es Hoffnung?
Ich habe zwei verschiedene Konfigurationen für die Vernetzung zwischen den KVM-VMs ausprobiert. In beiden Fällen ist die Kommunikation zwischen den VMs und der LAN + Router + Cloud einwandfrei, aber ich weiß einfach nicht, wie ich über den Zaun kommen soll - zum grüneren Gras ... :)
Conf 1 - KVM-Standardbrücke mit NAT: Ich kann ssh zum Debian-Host und auf den Docker-Container-Port zugreifen, aber gibt es ein Setup mit einer direkten Route?
Conf 2 - Macvtap-Adapter im Bridge-Modus zum LAN: Ich kann die Host-LAN-IP nicht von der VM aus anpingen, obwohl beide mit demselben Router verbunden sind. Die Antwort von der VM selbst lautet Destination Host Unreachable
. Irgendwelche Gedanken warum?
Wäre es besser, den Docker-Daemon in einer separaten VM auszuführen, als direkt auf dem Debian-Host? Auf diese Weise können sowohl der Container als auch die VM auf die KVM-Standardbrücke zugreifen. Aber ich fand es etwas seltsam, Docker in einer VM auf einem KVM-Host auszuführen.
Jede klare Anleitung wäre dankbar!
Übrigens ist die Bridge br-f9f3ccd64037
eine benutzerdefinierte Bridge, die ich mit Docker für die zukünftige Kommunikation zwischen Containern erstellt habe. Es wird nicht verwendet.
Aktualisieren:
Ich habe gerade festgestellt, dass ich mit der ersten Konfiguration einfach über die IP-Adresse (172.17.0.2) der VM-Gäste eine Verbindung zum Docker-Container herstellen kann.
Meine anfängliche Einrichtung war die zweite Konfiguration, da ich RDP in die VMs einbauen wollte. Dies ist einfacher, da der Macvtap-Treiber die VMs direkt mit dem LAN verbindet und keine SSH-Verbindung erforderlich ist. Dann konnte ich den Container nicht erreichen.