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.