Wie kann Docker über Hostnamen mit anderen Hosts im lokalen Netzwerk kommunizieren?

Wie kann Docker über Hostnamen mit anderen Hosts im lokalen Netzwerk kommunizieren?

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

host1führt Docker mit Standardkonfiguration aus.

Container host1können sich host2über die IP-Adresse verbinden 10.0.0.12, aber nicht über host2den Hostnamen host2.local. Kann mir bitte jemand sagen, wie die Container sich über Hostnamen direkt verbinden können? hosts2Bitte beachten Sie, dass sich beide Server host1, host2im 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.confKonfigurationsdatei 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/hostsSie 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.

verwandte Informationen