2017-11-20 2 views
2

ich die Docker Bild mysql/mysql-server von Docker Hub heruntergeladen haben, und lief den Befehl, einen Behälter mit:Wie verbinden Container von Eclipse Andockfenster mit jdbc

docker run --name <name of my container> -e MYSQL_ROOT_PASSWORD=<my pwd > -d mysql:mysql-server

ich geöffnet haben mysql im interaktiven Modus mit dem Befehl docker exec -it <name of my container> mysql -uroot -p und erstellt eine Datenbank, Tabelle und gewährt alle seine Privilegien zu meiner Maschine ip mit folgenden Befehle:

mysql> create user 'uname'@'<machine ip>' identified by 'pwd'; 
mysql> create database <dbname>; 
mysql> grant all privileges on <dbname>. * to 'uname'@'<machine ip>' identified by '<pwd>'; 
mysql> flush privileges; 

ich meine eclipse geöffnet und erstellt eine db conne ction unter Verwendung data source explorer und verbunden mit jdbc:mysql://<container ip>:3306/dbname. Wenn ich meine Verbindung teste, heißt es:

Könnte jemand vorschlagen, wo ich den Fehler mache?

+1

Bitte Bereinigungs Ihre Frage und stellen Sie sicher, dass es richtig formatiert ist. Beachten Sie, dass Sie in Ihrem Docker-Lauf keine Port-Zuordnung angeben, daher kann nicht darauf zugegriffen werden. –

+0

Probleme mit Grammatik, Formatierung und Interpunktion wurden behoben. – Smittey

Antwort

0

In Docker für Mac nicht-Dienste über Container ip zugreifen können.

In Docker für Windows können Sie den Container IP-Zugriff, aber Sie müssen Ihre Firewall konfigurieren.

beste und sicherste Weg, dies zu tun ist Port-Mapping mit -p Option:

docker run --name <name of my container> -e MYSQL_ROOT_PASSWORD=<my pwd > -d -p 3306:3306 mysql:mysql-server 

Ihre Datenbank in jdbc:mysql://localhost:3306/dbname

sein werde ich das offizielle Bild zu verwenden, empfehlen (nur mysql), anstatt die Datenbank manuell zu erstellen.

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=dbname -e MYSQL_USER=user -e MYSQL_PASSWORD=password -p 3306:3306 -d mysql 

Ihre Verbindung wird auch in jdbc:mysql://localhost:3306/dbname sein.

Wenn dies nicht funktioniert, stellen Sie sicher Ihre Proxy können Sie Verbindungen akzeptieren auf 3306.

+0

Wie kann ich auf Dienste über Container ip in Mac zugreifen? – cks

+0

Ich habe das gleiche processs versucht, die Sie erwähnt haben, aber immer noch Verbindung immer abgelaufen – cks

+0

CONTAINER ID IMAGE COMMAND Status Angelegt PORTS NAMES 16b0bd5bee9e mysql/mysql-server "/entrypoint.sh my ..." Vor 2 Stunden bis 2 Stunden (gesund) 0.0.0.0:3306->3306/tcp, 33060/tcp database Auch wenn der Container läuft und ich nicht auf den Server zugreifen kann, habe ich versucht, sowohl localhost als auch container ip zu verwenden. In beiden Fällen wird Timeout angezeigt. – cks

0

ich die gleiche Frage über Google gesucht und ich fand heraus, diese access containers by internal IPs 172.x.x.x

Also, wenn Sie durch das Gewinde gehen Sie wird herausfinden, dass es für Linux so funktioniert, wie Sie möchten, indem Sie den Container IP localhost:3306 verwenden.

+0

Ist es möglich, den Container von der gleichen Maschine zugreifen, in der Eclipse vorhanden ist? – cks

+0

Ja, als Docker Container haben Sie eigene IP können Sie Docker Inspect-Befehl verwenden und es wird das gleiche funktionieren. –

Verwandte Themen