Ich habe zwei Computer im selben Netzwerk mit den folgenden Hostnamen und IP-Adressen (dynamische IPs):
host1.local - 10.0.0.11
host2.local - 10.0.0.12
host1
führt Docker mit Standardkonfiguration aus.
Container host1
können sich host2
über die IP-Adresse verbinden 10.0.0.12
, aber nicht über host2
den Hostnamen host2.local
. Kann mir bitte jemand sagen, wie die Container sich über Hostnamen direkt verbinden können? hosts2
Bitte beachten Sie, dass sich beide Server host1, host2
im DHCP-Server befinden und keine feste IP-Adresse haben. Konfigurieren Sie daher die Datei/etc/hostsfunktioniert bei mir nicht.
Antwort1
Docker-Container befinden sich üblicherweise imStandard-Bridge-Netzwerk:
Wenn Sie Docker starten, wird automatisch ein Standard-Bridge-Netzwerk (auch Bridge genannt) erstellt, und neu gestartete Container stellen eine Verbindung damit her, sofern nicht anders angegeben.
Sie können auch benutzerdefinierte Bridges mit eigenem DNS-Dienst haben:
Benutzerdefinierte Brücken ermöglichen eine automatische DNS-Auflösung zwischen Containern.
In einem benutzerdefinierten Bridge-Netzwerk können Container sich gegenseitig nach Namen oder Alias auflösen.
Es gibt zusätzliche Optionen zum Konfigurieren der DNS-Auflösung in einem Container (sieheHier):
Standardmäßig erbt ein Container die DNS-Einstellungen des Hosts, wie in der
/etc/resolv.conf
Konfigurationsdatei definiert. Container, die das Standard-Bridge-Netzwerk verwenden, erhalten eine Kopie dieser Datei, während Container, die ein benutzerdefiniertes Netzwerk verwenden, den eingebetteten DNS-Server von Docker verwenden, der externe DNS-Lookups an die auf dem Host konfigurierten DNS-Server weiterleitet.Benutzerdefinierte Hosts, die in /etc/hosts definiert sind, werden nicht übernommen. Informationen zum Übergeben zusätzlicher Hosts an Ihren Container finden Sie unter „Einträge zur Container-Hosts-Datei hinzufügen“ in der Docker Run-Referenzdokumentation. Sie können diese Einstellungen für jeden Container einzeln überschreiben.
UndEinträge zur Container-Hosts-Datei hinzufügensagt:
/etc/hosts
Sie können mithilfe eines oder mehrerer Flags weitere Hosts zur Datei eines Containers hinzufügen--add-host
. Dieses Beispiel fügt eine statische Adresse für einen Host mit dem Namen Docker hinzu:$ docker run --add-host=docker:93.184.216.34 --rm -it alpine
Sie können natürlich auch den Upstream-DNS-Server so konfigurieren, dass er richtig auflöst *.local
. Wenn Sie hierfür mDNS verwenden, muss der Upstream-DNS-Server es verwenden können.