无法连接到Docker中的MySQL服务器
首先我运行mysql image:
docker run -e MYSQL_ROOT_PASSWORD=password -d -p 127.0.0.1:3308:3306 mysql
然后我使用容器bash(其中big_golick
是一个随机的,由big_golick
本身分配给容器):
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
而不是(这个IP是由docker-machine ip
返回的),那么结果是一样的。
问题是:如何正确地将我的Docker内部的MySQL端口暴露给外部Windows?
这个错误是在你原来的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
首先,检查netstat -an
以确保在Windows中打开端口。 如果是,请检查Windows防火墙以确保没有阻塞连接到端口。
我的Docker的大部分经验都在CoreOS中,所以我不太确定Windows如何处理到容器中的路由stream量。 在CoreOS中,它使用一个代理 。 如果Windows中有代理,请确保没有任何干扰。