Docker mehrere Container eindeutige öffentliche Hostnamen auf einem einzelnen Ubuntu-Server geben
Ich möchte mehrere Docker-Container einrichten, um verschiedene Hostnamen auf einem einzelnen Computer ohne Kubernetes bereitzustellen.
CONTAINER ID IMAGE COMMAND STATUS NAMES
673394ef1d4c busybox "top" Up 45 seconds nostalgic_shockley
d85756f57265 busybox "top" Up 51 seconds high_albattani
Angenommen, ich habe eine Domain xyz.com
; Ich möchte alpha.xyz.com
Routing zu nostalgic_shockley
und beta.xyz
Routing zu high_albattani
.
Ich habe /etc/hostname
gesucht und es hat einen lokalen Hostnamen.
root@saag:/home/root# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
...
root@saag:/home/root# cat /etc/hostname
saag
...
root@saag:/home/root# cat /etc/hosts
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Ich habe sogar versucht, die Hostnamen einzelnen Docker-IP-Adressen über /etc/hostname
zuzuweisen, konnte aber die Container immer noch nicht erreichen.
Auch in meinem domain-management-panel... sollte ich einfach den a-Record für alpha.xyz.com
und beta.xyz.com
auf die IP-Adresse dieses Hosts setzen?
2 answers
Irgendwie denke ich, dass du auf dem falschen Weg bist. Das interne Docker-Netzwerk wird im externen Netzwerk des Hosts nicht dargestellt. Der Host muss den Verkehr umleiten.
Normalerweise möchten Sie Verbindungen von der Außenwelt zu einem Dienst (dh in den meisten Fällen zu einem TCP-Port) innerhalb der Docker-Container zulassen.
Wenn Sie über HTTP sprechen und Port 80 (oder 443) für beide Container wünschen, ist es nicht so einfach, einen Port von der externen Schnittstelle zu ihnen zu leiten da können Sie es nicht an beide weiterleiten. Meine bevorzugte Lösung wäre also, dass ein Apache auf dem Hostcomputer namensbasiertes virtuelles Hosting mit zwei Vhosts für die beiden verschiedenen DNS-Namen durchführt und den Datenverkehr an den jeweiligen Docker-Container weiterleitet.
BTW: Wenn Sie verschiedene Ports haben, die vom externen Netzwerk den Docker-Containern zugeordnet werden sollen, funktionieren einige einfachere (netzwerkbasierte) Methoden, z. B. einige iptables-basierte Weiterleitungs-oder Hostportzuordnungen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-13 09:32:27
Auch in meinem Domain-Management-Panel... sollte ich einfach den a-Rekord für alpha.xyz.com und beta.xyz.com an die IP-Adresse dieses Hosts?
Das Domänenverwaltungsfenster ist das, womit Sie beginnen sollten . Weder Docker noch die Container selbst können aus dem Nichts eine Subdomain erstellen; Sie muss zuerst innerhalb des DNS-Dienstanbieters erstellt werden.
Sobald dies erledigt ist, kann der Docker-Host Pakete mit allen Docker-Einrichtungen an den richtigen Container weiterleiten bietet (iptables TCP / UDP – Portweiterleitung, würde ich annehmen) - oder Sie können HTTP-Anforderungen mit einem Reverse-Proxy weiterleiten.
Sie müssen die Container-Hostnamen nicht ändern, damit dies funktioniert.
(Technisch unterstützt DNS die dynamische Registrierung innerhalb des Protokolls, aber die meisten Dienstanbieter unterstützen sie entweder überhaupt nicht oder erfordern die Verwendung ihrer benutzerdefinierten API anstelle der Standard-DNS-Einrichtungen.
Darüber hinaus müssten die Maschinen einen Weg haben authentifizieren Sie sich beim DNS-Anbieter, und dafür gibt es kein gutes universelles System. Infolgedessen ist eine solche automatische Subdomainerstellung in der Praxis fast ausschließlich für Active Directory verfügbar.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-13 09:34:51