无法连接到Docker内的MySQL服务器

时间:2016-11-01 15:51:58

标签: mysql docker database-connection port

首先我运行mysql image:

docker run -e MYSQL_ROOT_PASSWORD=password  -d  -p 127.0.0.1:3308:3306 mysql

然后我使用容器bash(其中big_golick是由docker本身分配给容器的随机命名):

docker exec -it big_golick bash

在Bash中,我可以通过命令

成功连接到MySQL服务器
mysql -uroot -ppassword

但是当我尝试从Windows cmd连接到MySQL容器时:

mysql -uroot -ppassword -h127.0.0.1 -P3308

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (10061)

如果我改为连接192.168.99.100(此{由docker-machine ip返回),则结果相同。

问题是:如何正确地将Docker中的MySQL端口暴露给Windows外部?

3 个答案:

答案 0 :(得分:2)

错误在原始docker run命令的端口映射中,您只需要提供端口,而不是IP地址:

docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3308:3306 mysql

您可以运行docker ps -a来检查正在运行的容器中的端口映射。

您现在应该可以使用

连接到MySQL
mysql -uroot -ppassword -h192.168.99.100 -P3308

答案 1 :(得分:0)

首先,检查$scope.isNavActive = function (path) { try { return ($location.path ().split ('/')[2] === path.split ('/')[2]); } catch (error) { return false; } }; 以确保端口在Windows中打开。如果是,请检查Windows防火墙以确保没有任何东西阻止与端口的连接。

我的大部分Docker体验都在CoreOS中,所以我不确定Windows如何处理路由流量进入容器。在CoreOS中,它使用proxy。如果Windows中有代理,请确保没有任何内容干扰它。

答案 2 :(得分:0)

更改运行映像的端口有效。 我检查了此端口是否被其他人使用,但未使用。所以我只是拼命地在另一个端口“ 3309”中运行一个新容器。而且效果很好!