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?

Author: Ramie, 2020-07-13

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.

 0
Author: fratester,
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.)

 0
Author: user1686,
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