2016-08-31 3 views
4

Я установил изображение докера для mysql.Медленное подключение к mysql, работающему в докере

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD="Foo" -e DB_REMOTE_ROOT_NAME=root -e DB_REMOTE_ROOT_PASS="foo" -e DB_USER=foo -e DB_PASS="foo" -e DB_NAME=foo -v /:/host -v /home/user1/data/mysql:/var/lib/mysql mysql:latest 

Все хорошо, и я могу подключиться к MySQL двумя способами

docker exec -it mysql bash 
mysql -ufoo -pfoo foo 

и моего макинтош консоли, а также (без докер ехес -it)

mysql -ufoo -pfoo -h0.0.0.0 foo 

Проблема I см. то, что для второго подхода требуется много времени для подключения. он соединяется успешно, но есть как задержка от 15 до 20 секунд.

тогда как в докере exec он соединяется мгновенно.

Почему существует задержка, когда я соединяюсь с моим терминалом mac напрямую, используя mysql вместо первого SSH в поле?

Я попытался заменить 0.0.0.0 на localhost. но потом я получаю сообщение об ошибке

mysql: [Warning] Using a password on the command line interface can be insecure. 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

Edit ::

Я попытался следующие, и на самом деле ничего не работает

mysql -ufoo -pbar -h1x.1x.5x.14x foo 
mysql -ufoo -pbar -h127.0.0.1 foo 
mysql -ufoo -pbar -hmysql.local foo 

все выше 3 имеют 10 второй задержки

Но если I

docker exec -it mysql bash 
mysql -ufoo -pbar foo 

это мгновенно без задержки

ответ

0

Почему вы используете 0.0.0.0? возможно, он пытается подключиться с помощью сокета в первую очередь из-за привязки к localhost (поведение mysql-client).

  1. Try локальный/127.0.0.1, если вы используете докер-для-макинтош
  2. попробуйте поставить что-то вроде 127.0.0.1 test.local в свой /etc/hosts файл, и использование -htest.local - делает это быстрее подключиться?
  3. Использует ли ваш mysql-контейнер «dns resolving»? это быстрее, когда вы используете skip-name-resolve в своем /etc/mysql/my.ini? (также может быть связано с a), если не связано с a, проверьте, имеет ли контейнер mysql поврежденный DNS
+0

Если я заменил 0.0.0.0 на localhost. то я получаю сообщение об ошибке 'mysql: [Warning] Использование пароля в интерфейсе командной строки может быть небезопасным. ERROR 2002 (HY000): Не удается подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock' (2) ' –

+0

вы используете docker-for-mac? или dockertoolbox? –

+0

Новейший docker-for-mac –

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