Docker Netzwerk einfach erklärt Teil 2 - Benutzerdefinierte Netzwerkbrücke

Um Docker Container miteinander zu verbinden und intern oder extern mit einem Container zu kommunizieren, gibt es verschiedene Möglichkeiten. Einige Docker-Grundlagen sollten für dieses Tutorial bereits vorhanden sein, sind aber nicht zwingend notwendig, ansonsten empfehle ich meinen Kurs Das große Docker & Linux Enterprise Bootcamp zu besuchen.

Hier kommst du zu Teil 1 dieser Serie über das Docker-Netzwerk.

In dieser Serie verwende ich eine VirtualBox mit einem frisch installierten Ubuntu LTS. Du kannst die Beispiele aber auch auf jeder anderen Maschine oder auf einem gemieteten Server wie z.B. von Netcup nachvollziehen.

Docker Netzwerk einfach erklärt - Benutzerdefinierte Netzwerkbrücke - Teil 2
Dieses Video auf YouTube ansehen.
Mit dem abspielen des Videos stimmst du den Datenschutzrichtlinien (siehe Datenschutz) von Youtube zu.

Benutzerdefinierte Netzwerkbrücke

docker network create delta

ip a

Wir haben nun eine neue Netzwerkbrücke mit einer neuen IP-Adresse erstellt.

docker network ls

Jetzt sehen wir auch die neue Brücke mit dem Namen delta.

docker run -itd --rm --network delta --name voyager busybox

docker run -itd --rm --network delta --name borg busybox

ip a

Hier sehen wir nun auch die neuen Netzwerkschnittstellen, die die neuen Container verwenden.

bridge link

docker inspect delta

Hier sehen wir nun, dass sich picard und sisko im neuen Netzwerk in der neuen IP-Range befinden. Dadurch können wir die Docker-Container voneinander isolieren. Somit können voyager und ds9 nicht auf die Docker-Container kirk, picard und enterprise zugreifen.

Versuchen wir nun die enterprise von der voyager aus anzupingen.

docker exec -it voyager sh

ping 172.17.0.3 (Container enterprise)

Hier sehen wir, dass es nicht möglich ist, den Enterprise-Container vom Voyager-Container aus anzupingen.

Docker empfiehlt immer eine benutzerdefinierte Netzwerkbrücke, es ist immer wichtig verschiedene Dienste auch sicherheitstechnisch voneinander zu isolieren und genau das passiert hier. Bridges sind wohl die beste Netzwerkmethode wenn man Docker auch in der Produktivumgebung einsetzt.

Docker kümmert sich auch intern um die DNS-Auflösung der Container über den Namen.

Wir können statt der IP-Adresse auch einfach den Namen des Containers angeben, den wir ansprechen wollen.

docker exec -it voyager sh
ping ds9
(Container ds9 innerhalb der selben Netzwerkbrücke)

Der Vorteil ist, dass Docker sich darum kümmert, denn wenn wir Container neu erstellen müssen, kann es passieren, dass wir trotz gleichem Namen eine andere IP-Adresse bekommen. So können wir sicherstellen, dass wir immer auf den richtigen Container zugreifen können.

Diese Funktion ist im Standardnetzwerk nicht aktiviert, daher sollte man immer benutzerdefinierte Netzwerke erstellen.

Weiter im dritten Teil.

Quelle

Docker Kurs - Das große Docker & Linux Enterprise Bootcamp

Docker - https://docs.docker.com/engine/reference/run/#network-settings