Hosten Sie Docker Internal unter Linux

Isaac Tony 20 Juni 2023
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.

Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

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