‫Voraussetzung für diese Vorlesung ist, dass Sie die vorherigen Netzwerkvorlesungen gelesen haben und die wichtigsten
‫Konzepte für Docker-Netzwerke und die dazugehörigen Befehle verstanden haben.
‫Gut.
‫In dieser Vorlesung lernen Sie DNS kennen und lernen, wie es sich auf Container in benutzerdefinierten
‫Netzwerken und Standardnetzwerken auswirkt.
‫Wir werden
‫schnell überlegen, wie wichtig es ist, dass wir ein gutes DNS haben, da Sie sich aufgrund der Dynamik
‫nicht auf IP-Adressen in Containern verlassen können. Wir werden die Unterschiede zwischen Standard- und benutzerdefinierten Netzwerken im
‫Hinblick auf den Umgang mit DNS untersuchen.
‫Dann prüfen wir die Option --link für die Containerausführung, um DNS im Standardbrückennetzwerk zu
‫aktivieren.
‫Für all diese Container und virtuellen Netzwerke und für die Kommunikation untereinander ist
‫eines von entscheidender Bedeutung. und das heißt. Weil in der Welt der Container, die ständig auf den
‫Markt kommen und verschwinden und sich bewegen und ausdehnen und schrumpfen, und all das Wunderbare an
‫diesen Mikrodiensten, die überall auftauchen, ist, dass wir uns nicht mehr so einfach auf IP-Adressen als Kommunikationsmethode verlassen können
‫von einer Sache zur anderen. Weil wir nicht von Minute zu Minute davon ausgehen können, dass
‫die IP-Adressen sogar gleich sein werden.
‫Der Container verschwindet möglicherweise, oder es kann ein Fehler auftreten, und Docker ruft ihn an einer anderen Stelle auf.
‫Es ist einfach zu dynamisch und zu kompliziert, um damit umzugehen.
‫Es stellt sich also heraus, dass es dafür eine integrierte Lösung gibt, nämlich die DNS-Benennung. Docker verwendet die Containernamen als
‫Entsprechung eines Hostnamens für Container, die miteinander kommunizieren.
‫Wenn Sie sich erinnern, hatten wir gerade zwei Container am Laufen ...
‫Wenn Sie sich erinnern, dass sich der Nginx in einem neuen Netzwerk namens my_app_net befand.
‫Richtig.
‫Und hat den einen Container drauf. Da ich dieses neue Netzwerk erstellt
‫habe, das nicht das
‫Standardbrückennetzwerk ist, verfügt es über eine spezielle neue Funktion, nämlich die automatische DNS-Auflösung für alle Container in diesem
‫virtuellen Netzwerk von allen anderen Containern in diesem virtuellen Netzwerk unter Verwendung ihrer Containernamen.
‫Wenn ich einen zweiten Container in diesem virtuellen Netzwerk erstellen würde, könnten sie sich unabhängig
‫von der IP-Adresse mit ihren Containernamen finden.
‫Versuchen wir Folgendes: Name des Docker-Container-Laufs ... und wir nennen es meine Nginx ... und wir werden das
‫Netzwerk als mein App-Netz aus
‫dem Nginx-Image angeben.
‫Wenn wir uns dieses Netzwerk ansehen, sollten wir 2 Container sehen. Und wenn ich einen Docker-Container-Exec durchführe,
‫wird von dem neuen Container, den ich gerade erstellt habe, auch die IT dort
‫benötigt. Und wenn wir einen Ping an den neuen Nginx senden, stellen
‫Sie fest, dass die DNS-Auflösung nur funktioniert. Dies macht es für Sie sehr einfach, einen Container zu
‫haben, und Sie müssen eine Konfigurationsdatei festlegen, mit der Sie kommunizieren können. Nehmen wir
‫an, der PHP-Server kommuniziert mit dem MySQL-Backend. Strg-c raus, und du wirst sehen, dass es auch andersherum funktioniert.
‫Wenn ich in den neuen Nginx-Container springe und versuche, my ngnix zu pingen, wird angezeigt, dass die Auflösung in beide
‫Richtungen funktioniert.
‫Und das ist es, was ein großes Problem löst, wenn Sie Container drehen, weil Sie nicht vorhersagen können, wie
‫lange sie halten und wo sie sich in einer Minute in einem Produktionsdesign befinden, in dem
‫Sie eine Gruppe von Containern haben Docker Swarm Server.
‫Daher ändert sich auf Ihrem lokalen Computer möglicherweise nicht viel. Wenn Sie jedoch drei oder
‫vier Container anhalten und dann dieselben Container in einer anderen Reihenfolge
‫starten, haben diese möglicherweise nicht dieselbe IP-Adresse. Ihre Hostnamen oder Containernamen sind jedoch immer
‫gleich.
‫Darauf können Sie sich verlassen.
‫Wenn wir jetzt eine Docker-Netzwerkliste erstellen, hat das Standard-Bridge-Netzwerk hier einen Nachteil.
‫Der DNS-Server ist standardmäßig nicht integriert.
‫Du kannst also den --link benutzen.
‫Wenn Sie also einen Container erstellen, werden Sie feststellen, dass es eine Verknüpfungsoption gibt, und Sie können tatsächlich
‫manuelle Verknüpfungen zwischen Containern in diesem Standardbrückennetzwerk angeben.
‫In Wirklichkeit ist es jedoch viel einfacher, ein neues Netzwerk für Ihre Apps zu erstellen, damit Sie dies nicht
‫jedes Mal tun müssen.
‫Und in einem zukünftigen Abschnitt, wenn wir über Docker Compose sprechen, werden Sie sehen, wie
‫viel davon noch einfacher wird, da Compose automatisch neue virtuelle Netzwerke erstellt, wenn Sie eine App damit starten.
‫So wird die Kommunikation zwischen Ihren Containern noch einfacher.
‫Als kurze Zusammenfassung haben wir in diesem Vortrag behandelt, wie Container sich nicht wirklich auf IP-Adressen verlassen können oder
‫sollten, um miteinander zu kommunizieren, weil sie einfach nicht zuverlässig sind.
‫Und dieser DNS ist hier wirklich der Standard für die Kommunikation zwischen Containern auf
‫demselben Host und zwischen mehreren Hosts.
‫Daher empfahl ich Ihnen, immer benutzerdefinierte Netzwerke zu erstellen, da dies einfacher ist, als
‫immer einen --link zu erstellen.
‫Und dann gab ich Ihnen einen Vorgeschmack auf Docker Compose und wie dies alles einfacher
‫wird, insbesondere das Networking.