Ich bin 2 Docker Container mit der --net = Host-Option ausgeführt, so dass die Vernetzung transparent ist (Docker Container verwendet das gleiche Netzwerkgerät wie Host).Docker: Zugriff auf mysql im Docker Container mit --net = host Option vom Host
docker network inspect host
[
{
"Name": "host",
"Id": "32ddf8f58d520e49a0b3f296d6d03134b24d7c503309e1c35e04c248010aa64b",
"Scope": "local",
"Driver": "host",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Containers": {
"0e41eb0b07d2751db99a204a3a69a2446bf5b869150bc5741df670e56dbce670": {
"Name": "sleepy_goldstine",
"EndpointID": "cc8f2c4da055ae7e608c127552f67753c319aeb603234c418a0ebe8958c1025a",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"71de826121e7222020eec8be8b3a737f3297f8c3aa99d21f0f7016d6aca6f668": {
"Name": "tender_goodall",
"EndpointID": "2da0468dbaf1e6b877984cbeb6b2a775786259fec7e83eb373c1d25fe715e16f",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
},
"Options": {}
}
]
Ich kann auf mehrere Dienste in den Docker-Containern von außen zugreifen. Es gibt jedoch eine Sache, die nicht funktioniert, und ich fange an, mit der Schere zu laufen ...
Auf dem Docker Host gibt es eine MySQL-Datenbank auf Port 3306. Keine Probleme damit.
Docker Behälter 1 als auch auf Lauf mysqld Port 3307 und Andockfensters Behälter 2 weist an Port 3308
jedoch mysqld läuft,
mysql -P 3307 -u Benutzer -p Dbname Verwendung
Ich kann vom Host aus nicht auf die MySQL-Datenbanken zugreifen. Selbst wenn ich den Port für mysql zur Verfügung stelle, der in der ersten Docker-Instanz läuft, leitet er mich immer zur mysql-Datenbank auf dem Host. Es gibt keine Iptables-Regeln, die zu einem solchen Verhalten führen könnten. Das Ausschalten der Firewall ändert das Verhalten nicht.
In my.cnf funktioniert der mysql-Server an 0.0.0.0 gebunden (127.0.0.1) funktioniert auch nicht.
So bin ich verloren und hoffe, dass jemand eine Lösung sieht. Das Entfernen der Option --host = net und das Arbeiten mit Port-Exposing ist keine Option, da dies die Netzwerkleistung in den Containern verringert.
Bearbeiten: Vergessen zu erwähnen, dass die Datenbanken innerhalb der Docker-Container zugänglich sind und wie vorgesehen funktionieren. Die einzige Sache, die nicht funktioniert, ist die Verbindung von Host -> Docker wegen der Verbindung wird immer Host -> Host selbst mit dem Port aus dem Docker-Container gerichtet sein.
Sie sind mein Held! Gelöst! – Blacksheep
@Blacksheep Ich bin froh, dass es geholfen hat :-) Ich traf dieses Problem viele Male mit SSH-Tunneling MySQL-Port zu localhost und immer gefragt, warum nicht das verdammte Ding funktioniert. Beachten Sie, dass es nicht funktioniert, wenn Sie 'localhost' bereitstellen. Hier ist eine Frage (http://serverfault.com/q/337818/226737) darüber, wie Sie den MySQL-Client so konfigurieren können, dass er erwartungsgemäß agiert. Und hier ist ein verwandter [MySQL Bug] (https://bugs.mysql.com/bug.php?id=31577). – saaj