Es gibt mehrere langjährige Diskussionen darüber, wie dies auf konsistente, gut verständliche und portable Art und Weise zu tun ist. Keine vollständige Lösung, aber ich werde Sie mit den folgenden Diskussionen verlinken.
In jedem Fall möchten Sie versuchen, die Option --add-host zu verwenden, um die IP-Adresse des Hosts in die Datei/etc/host des Containers hinzuzufügen. Von dort ist es trivial an den Host auf jedem gewünschten Port zu verbinden:
Einträge in einer Container-Hosts Hinzufügen Datei
Sie andere Hosts in eine Datei/etc/hosts-Datei des Containers hinzufügen können mit einem oder mehr --add-host Flags. In diesem Beispiel wird eine statische Adresse für einen Host mit dem Namen Docker:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
Hinweis: Manchmal müssen Sie mit dem Docker Host verbinden, was bedeutet, die IP-Adresse des Hosts zu bekommen. Sie können die folgenden Shell verwenden diesen Prozess zu vereinfachen Befehle:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
Dokumentation:
https://docs.docker.com/engine/reference/commandline/run/
Diskussionen auf dem Host aus dem Behälter zuzugreifen:
https://github.com/docker/docker/issues/1143
https://github.com/docker/docker/issues/10023
Wenn der MySQL-Server auf einem Port lauscht, könnte nicht der Behälter nur mit dem Host verbinden an diesem Port wie jede andere Internetverbindung? – jwodder