Direkt zum Inhalt

host.docker.internal

Gespeichert von Erik Wegner am/um
Body

Für Entwicklungszwecke mag es sinnvoll sein, verschiedene Container miteinander kommunizieren zu lassen, ohne alle in einer gemeinsamen docker-compose.yaml-Datei zu haben.

Wenn ein Container-Port veröffentlicht wird, entweder per docker run --port 8080:8080 ... oder gleichwertig in der docker-compose-Datei, dann ist dieser Port auch auf der Netzwerk-Schnittstelle docker0 erreichbar.

Der Befehl ip address show docker0 zeigt diese IP-Adresse an. Damit diese IP-Adresse nicht fest gespeichert werden muss, kann ein zusätzlicher Host-Eintrag angelegt werden.

Dazu wird ein Container per docker so gestartet:

docker run -it --rm --add-host host.docker.internal=host-gateway busybox

In der docker-compose.yaml-Datei sieht ein passender Eintrag so aus:

services:
busybox:
image: busybox
extra_hosts:
- host.docker.internal:host-gateway
command:
- sleep
- '180000'

Anschließend kann der Hostname host.docker.internal genutzt werden, um unabhängig vom Containernamen auf einen veröffentlichen Netzwerk-Port zuzugreifen.