2015-10-16 56 views
3

我創造了我的容器是這樣的:訪問到MySQL從主機到容器中,CLI

$ docker run -d -p 33060:3306 myimage 

然後我試着從主機容器連接到MySQL服務器:

$ mysql -uroot -proot -P 33060 

我得到這個錯誤:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

很奇怪,因爲在Navicat只有我改變了端口和精細工作: enter image description here

但如果我有集裝箱的IP:

$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mycontainer 
172.17.0.55 

然後我可以連接成功MySQL服務器:

$ mysql -uroot -proot -h 172.17.0.55 

但它是一個乏味的任務必須檢查每個IP我創建一個新的容器連接到MySQL。有什麼設置可以使這個任務更簡單?

回答

6

這不是Docker問題。默認情況下,即使您指定-Pmysql命令行客戶端也將連接到本地(Unix)套接字而不是網絡套接字。

這種行爲在the documentation描述:

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given

你必須通過-hlocalhost選項,也可以在/etc/mysql/my.cnf

設置你的默認連接
相關問題