【发布时间】:2017-03-14 19:18:45
【问题描述】:
首先我运行mysql镜像:
docker run -e MYSQL_ROOT_PASSWORD=password -d -p 127.0.0.1:3308:3306 mysql
然后我使用容器 bash:
docker exec -it my_container_name 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 Machine,则必须使用 Docker Machine VM 的 IP 地址而不是 127.0.0.1:
mysql -uroot -ppassword -h192.168.99.100 -P3308。 192.168.99.100 通常是 Docker Machine VM 的 IP。 -
nwinkler 确实,192.168.99.100 返回购买 docker-machine ip 命令。但它替换 ip 并没有帮助
-
您能否运行
docker ps -a来检查端口映射是否设置正确? -
@nwinkler 它为 mysql 图像返回 127.0.0.1:3308->3306/tcp
-
您可以尝试从
docker run命令中删除127.0.0.1吗?docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3308:3306 mysql
标签: mysql docker database-connection port