Ich habe einen anderen Weg gefunden, um mein Endziel zu erreichen, auf die Web-Benutzeroberfläche eines Docker-Containers zuzugreifen. Ich habe am Ende einen SOCKS v5-Proxy über SSH eingerichtet. Dies ist eigentlich nur für Entwicklungs- und Debugging-Zwecke gedacht und sollte nicht in einer Produktionssituation verwendet werden. Ich übernehme keine Verantwortung für die Sicherheitsauswirkungen der Ausführung von sshd als root in einem Docker-Container. Stellen Sie sicher, dass Sie die Konsequenzen verstehen.
Die Schritte, die ich unternommen habe, sind unten aufgeführt. In diesem Beispiel ist zu berücksichtigen, dass centosec2
mein EC2-Server CentOS ausführt. Dies myappcontainer
ist der Name des Containers, auf dem die Anwendung ausgeführt wird, die die Web-Benutzeroberfläche hostet, auf die ich zugreifen möchte, und my-net
der Name des Overlay-Netzwerks, myappcontainer
auf dem ausgeführt wird.
Bedarf:
- Browser, der für die Verbindung über einen SOCKS v5-Proxy konfiguriert werden kann. Ich empfehle Firefox mit dem Add-On FoxyProxy, da dies das Ein- und Ausschalten des Proxys sehr einfach macht.
- Andockbild, das ausgeführt werden kann
sshd
. Ich habe https://hub.docker.com/r/macropin/sshd/ verwendet.
Schritte:
Portweiterleitung eines Ports von Ihrem Laptop zum Server. In diesem Beispiel ist 8888 der Port, auf dem der SOCKS-Proxy ausgeführt wird, aus der Perspektive Ihres Laptops und 9696 der weitergeleitete Port auf dem Server.
[user@laptop ~]$ ssh -L 8888:localhost:9696 centosec2 -N
Öffnen Sie in einer anderen Shell eine reguläre SSH-Sitzung auf dem Server und starten Sie den
sshd
Container. Stellen Sie sicher, dass dersshd
Container in demselben Netzwerk ausgeführt wird wie der Container, auf dem die Web-Benutzeroberfläche ausgeführt wird.[Benutzer @ Laptop ~] $ ssh centosec2 [user @ centosec2 ~] $ docker run --rm -d -p 2222: 22 --netze mein-net -v .ssh / id_rsa.pub: /root/.ssh/authorized_keys macropin / sshd
Wenn der
sshd
Containersshd
gestartet ist, verwenden Sie dieselbe Shell für ssh in den Container und starten Sie einen SOCKS-Proxy an dem Port, der an Ihren Laptop weitergeleitet wird.-D 9696
weist ssh an, einen SOCKS-Server an Port 9696 zu starten.[user@centosec2 ~]$ ssh -D 9696 -p 2222 root@localhost -N
Ihr Laptop kann jetzt über den SOCKS-Proxy auf Port 8888 auf das Docker-Netzwerk zugreifen. Konfigurieren Sie Ihren Browser so, dass er über einen SOCKS v5-Proxy eine Verbindung zum Internet herstellt
localhost:8888
. Sie sollten dann in der Lage sein, mit dem Hostnamen des Docker-Containers zur Web-Benutzeroberfläche zu navigierenhttp://myappcontainer:8080
Es ist eine Menge Reifen, durch die man springen kann, aber es war der einfachste Weg, um herauszufinden, wie ich das erreichen kann. Hoffentlich hilft das jemand anderen.