2016-03-10 3 views
0

я просто вытащил и запустить официальный Docker MySQL image и он работает локально на моей машине:Подключение к Docker контейнера от хозяина

docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.11 

инструкции на экране, что сказать вам, как подключиться к серверу MySQL (контейнер) изнутри еще один контейнер (который настроен как клиент командной строки). Но у меня есть общий клиент JDBC fat (SQuirreL), и мне интересно, как подключиться к контейнеру для докеров.

Для строки соединения JDBC, мне нужно, чтобы обеспечить как имя хоста и DBName, что я могу использовать? Я предположил бы, что контейнер Docker какой-то образом адресация моего основного ОС, но я на самом деле не создал базы данных, поэтому я не уверен, что dbname значения я могу поставить:

jdbc:mysql://<hostname>:3306/<dbname> 

ответ

2

Вы можете запустить свой экземпляр с пересылкой 3306:

$ docker run --expose=3306 -p 3306 mysql 

См. incoming ports.

указывается:

jdbc:mysql://127.0.0.1:3306/<dbname> 

прикажете стать:

$ docker run --name mydb -e MYSQL_ROOT_PASSWORD=12345 -d --expose=3306 -p 3306 mysql:5.7.11 

Вы, возможно, потребуется изменить конфигурацию MySQL.

может пойти внутри контейнера с:

$ docker exec -it mydb bash 

И тогда вы могли бы:

$ echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf 

Не забудьте перезагрузить MySQL.

Затем вам необходимо создать базу данных и импортировать вашу схему (при необходимости).

$ mysql -uroot -p12345 -e"CREATE DATABASE mydb" 
$ mysql -uroot -p12345 mydb < mydb-schema.sql 
+0

Спасибо @joksnet (+1) - см. Мой обновленный вопрос, в котором теперь содержится точная команда Docker, в которой я бежал. Когда я пытаюсь объединиться в аргументы '--expose' и' -p', я получаю всевозможные ошибки. ** Как мне выполнить свою команду с вашими (объединенными) выражениями/p args? ** Еще раз спасибо! – smeeb

+0

Еще раз спасибо !!! Один быстрый вопрос о последующих действиях, если вы не возражаете: когда вы говорите «* Не забывайте перезагружать mysql *», вы хотите остановить/перезапустить контейнер? Еще раз спасибо! – smeeb

+0

Просто попробуйте 'service mysql reload' изнутри контейнера. ;) – joksnet

Смежные вопросы