Hosten Sie Docker Internal unter Linux
Docker ermöglicht es Entwicklern, Anwendungen effizient zu erstellen, zu testen und bereitzustellen, indem sie in standardisierte Einheiten, sogenannte Container, verpackt werden. Bei der Arbeit mit Docker-Containern können Szenarien auftreten, in denen Sie Ihren Container mit dem Host verbinden möchten.
Linux-Äquivalent zum Befehl host.docker.internal
Docker-Versionen vor 18.03
unterstützten den Befehl host.docker.internal
nur auf Mac- und Windows-Systemen. Die Version 20.10.0
von Docker wurde jedoch im Dezember 2020 veröffentlicht, und die nachfolgenden Versionen unterstützen die Verwendung des Befehls host.docker.internal
, um eine Verbindung zum Host auf Linux-Maschinen herzustellen.
Wenn der Host eine sich ändernde IP-Adresse hat, können wir uns laut Docker-Dokumentation mit host.docker.internal
mit dem Host verbinden, was zur internen IP-Adresse des Hosts auflöst. Dies kann jedoch nur in der Entwicklungsumgebung verwendet werden.
Unter Windows und Mac ist die Verwendung von host.docker.internal
zur Verbindung mit dem Host viel einfacher. Angenommen, wir wollten eine Verbindung zu einem MySQL-Dienst herstellen, der auf dem Standardport des Hosts, 3606
, ausgeführt wird.
Mit dem folgenden Befehl können wir den Docker-Container dazu bringen, sich mit diesem Dienst zu verbinden.
Code:
host.docker.internal:3306
Auf einem Linux-System hingegen müssen wir ein zusätzliches Tag hinzufügen, bevor wir uns erfolgreich mit dem Host verbinden können. Dies gilt nur für Docker-Versionen nach 20.10.0
, indem das Flag --add-host
neben dem Befehl docker run
hinzugefügt wird.
Code:
docker run -d --add-host host.docker.internal:host-gateway new_container
Dieser Befehl fügt dem Verzeichnis etc/hosts
einen neuen Eintrag hinzu und ordnet host.docker.internal
dem Host-Gateway zu. Alternativ können wir auch 172.17.0.1
, auch bekannt als localhost
, verwenden, das ist die Gateway-Adresse für das Standard-Bridge-Netzwerk in Docker.
Docker-Netzwerke sind ein weites Thema, und die oben genannten Befehle oder Methoden können unterschiedlich verwendet werden, je nachdem, was Sie erreichen möchten.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn