Greifen Sie über den FQDN auf den Docker-Container zu

0

Ich habe mehrere Docker-Container, in denen Web-Apps ausgeführt werden. Auf sie kann in meinem Netzwerk über die IP des Hosts und die Portnummer zugegriffen werden, an die ich im Container gebunden bin.

Ich möchte über einen FQDN auf die Apps zugreifen können, z. B. app1.home.com (oder home.com/app1, falls dies einfacher ist).

Um dies zu erreichen, würde ich einen DHCP- und DNS-Server in meinem Netzwerk benötigen. Ich plane, dnsmasq zu konfigurieren. Dadurch könnte ich die Domain home.com lokal auflösen.

Dann brauche ich einen Proxy mit einer Beschreibung, um zu dem bestimmten Port zu gelangen. Ich weiß, dass dies mit Nginx oder Apache erreicht werden kann, aber ich weiß nicht wie und es scheint ein bisschen zu viel zu sein. Ich denke, HAProxy könnte eine Option sein, wieder weiß ich nicht wie.

TL; DR: Wie kann ich Web-Apps, die in Docker-Containern ausgeführt werden, mit einem FQDN in meinem Heimnetzwerk ansprechen?

David
quelle

Antworten:

0

Konfigurieren Sie Ihren Docker-Host einfach so, dass er mehrere IPs hat, eines für jeden Hostnamen, den Sie konfigurieren möchten. Konfigurieren Sie dann dnsmasq so, dass jede IP-Adresse auf einen anderen Hostnamen verweist: site1.home.com-> XXXX, site2.home.com-> YYYY. Alle diese IP-Adressen gehören Ihrem Docker-Host.

Starten Sie dann Ihre Container auf dem Docker-Host. Ich verwende Docker-Schwarm mit einem Overlay-Netzwerk, das von einem Nginx-Reverse-Proxy-Server geschützt wird. Ich richte Docker-Container ein, die zu diesem Overlay-Netzwerk gehören, und gebe --names für sie an, damit das Docker-Overlay-Netzwerk seine eigenen DNS hat, mit denen der Nginx-Reverse-Proxy auf andere Container verweist.

Dann konfiguriere ich nginx so, dass es mithilfe von DNS auf Schwarmbasis auf die anderen Container verweist, abhängig von der IP-Adresse, die für die Verbindung zum Docker-Host verwendet wird. Also wird http: // XXXX / von nginx übersetzt, um auf den DNS-Namen site1 im Overlay-Netzwerk zu verweisen. nginx ruft die Webseite des site1-Containers ab und gibt sie an den Benutzer zurück. Es ist eine Menge Overkill, hat aber enorme Vorteile, dass es dies aufgrund von fortlaufenden Updates redundant und mit geringen Ausfallzeiten ausführt.

Zum Beispiel: Ich gehe in meinem Browser zu home1.home.com. Dies löst eine DNS-Suche aus, bei der home1.home.com in XXXX geändert wird. Ich werde zum Nginx-Reverse-Proxy des Docker-Hosts weitergeleitet, der die im internen Overlay-Netzwerk gehostete Webseite von site1 basierend auf der IP-Adresse abruft, die ich für die Verbindung zum Docker-Host verwendet habe. Es präsentiert mir dann die Webseite.

Kyle H
quelle