Warum können Docker Container die IP 127.0.0.1 nicht erreichen?
Ich nutze mehrere Container in Docker, bei denen ich gerne die lokale MySQL Datenbank nutzen möchte (127.0.0.1:3306). Denn ich als Anfänger finde, das wenn die Datenbank nur lokal gebraucht wird das es nicht zwingend öffentlich zugänglich sein muss. Kann mir da jemand weiterhelfen?
2 Antworten
Jeder docker Container hat sein eigene isolierte Netzwerkumgebung, sofern Du das nicht anders eingerichtet hast. 127.0.0.1 liegt also im Container und daher kann die Software im Container auch nicht drauf zugreifen.
https://docs.docker.com/engine/reference/run/#network-settings
Eine Variante wäre, dass die Container den Network Stack des Hosts benutzen. Alternativ verwendest Du
--add-host host.docker.internal:host-gateway
Und greifst dann auf host.docker.internal zu um auf dein MySQL zu kommen.
Die letzte Alternative wäre alle docker Container in ein gemeinsames Netzwerk zu packen und auch MySQL in nen Container zu setzen, so dass alle untereinander kommunizieren können.
Docker-Container verwenden standardmäßig eine isolierte Netzwerkumgebung, wodurch die IP-Adresse 127.0.0.1 nicht auf den Host oder andere Container verweist.
Außerdem ist die IP-Adresse 127.0.0.1 eine sogenannte Loopback-Adresse und bezieht sich auf den lokalen Host (also den Container selbst), nicht auf den Host des Docker-Hostsystems.
Kannst du, in dem du den entsprechenden Container mit der Option --network startest und das Netzwerk auf bridge oder ein benutzerdefiniertes Netzwerk setzt. Dadurch wird der Container nur innerhalb des Docker-Netzwerks erreichbar, externe Anfragen werden dadurch blockiert.
Gäbe es denn eine andere Möglichkeit, womit ich die Datenbank von außen nicht erreichbar machen muss?