首先我运行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外部?
答案 0 :(得分:2)
错误在原始docker run
命令的端口映射中,您只需要提供端口,而不是IP地址:
docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3308:3306 mysql
您可以运行docker ps -a
来检查正在运行的容器中的端口映射。
您现在应该可以使用
连接到MySQLmysql -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”中运行一个新容器。而且效果很好!