Ich verwende Docker 1.9.1 unter OSX und bin mit meinem privaten Arbeitsnetzwerk mit Cisco AnyConnect VPN verbunden. Ein Dienst, den ich in einem Docker-Container ausfühle, stellt eine Verbindung zu einer Datenbank innerhalb des Arbeitsnetzwerks her und ist innerhalb des Containers nicht erreichbar, aber von außerhalb des Containers in OSX erreichbar. Es ist auch von innerhalb des Containers erreichbar, wenn ich direkt mit dem Arbeitsnetzwerk verbunden bin, nicht über VPN. Ich vermute, dass ich einige Netzwerkkonfiguration mit der Docker-Maschine VM tun muss, aber ich bin nicht sicher, wohin von hier aus gehen.
Wenn Sie Virtualbox als Hypervisor für die Docker-Maschinen verwenden, sollten Sie Ihren Netzwerkmodus als Bridged Adapter festlegen. Auf diese Weise wird Ihre VM wie Ihr eigener Computer individuell mit dem Netzwerk verbunden. Um weitere Informationen zur Fehlerbehebung zu erhalten, versuchen Sie, den db-Hostcomputer über die Befehlszeile des Containercomputers anzupingen. Verwende docker exec -it <container-name> /bin/bash
Überprüfen Sie Ihr Routing in der Docker Machine VM mit
%Vor%Das sieht so auf einer frischen Maschine aus:
docker@default:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 1 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Wenn Sie viele Netzwerke erstellt haben, d. h. mit docker-compose
, wurden möglicherweise Routen zu Stapeln erstellt, die in Konflikt mit Ihren VPN- oder lokalen Netzwerkrouten stehen.
docker@dev15:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 1 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-7400365dbd39
172.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-4db568a601b4
[...]
192.168.80.0 0.0.0.0 255.255.240.0 U 0 0 0 br-97690a1b4313
192.168.105.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Es sollte sicher sein, alle Netzwerke mit
zu entfernen %Vor%da aktive Netzwerke nicht standardmäßig entfernt werden ... aber seien Sie dennoch vorsichtig, wenn Sie rm Befehle ausführen:)
Ich bin heute auf dieses Problem gestoßen und habe AnyConnect dazu gebracht, ohne Split-Tunneling oder einen anderen VPN-Client wie OpenConnect zu arbeiten. Es brauchte nur ein bisschen Portweiterleitung.
Beim Testen wurde die obige Softwarekonfiguration verwendet.
Stellen Sie sicher, dass keine VMs ausgeführt werden und Sie die Verbindung zum VPN getrennt haben.
Ändern Sie Zeile 47, um entweder Ihre unsichere Registrierung anzugeben oder den Parameter "--engine-insecure-registry: 5000" zu löschen.
Führen Sie Folgendes in einer Shell auf Ihrem Mac aus:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Workaround für MacOS Sierra. Aus irgendeinem Grund führt die Aktivierung von NTP dazu, dass die Docker-Engine hängen bleibt. Siehe:
./docker-vpn-helper
Richtet die Portweiterleitung ein, regeneriert TLS-Zertifikate.
Achten Sie auf die folgenden Zeilen, die vom Skript ausgegeben werden, die Sie ausschneiden und in Ihre Shell einfügen müssen.
export DOCKER_HOST=tcp://localhost:2376
export DOCKER_CERT_PATH=/Users/<username>/.docker/machine/machines/default
export DOCKER_MACHINE_NAME=default
Verbinden Sie sich mit Ihrem AnyConnect VPN und testen Sie das Andockfenster:
docker run hello-world
Tags und Links docker networking vpn docker-machine