我使用以下命令创建了test_mysql
:
docker run -d -p 3306:3306 --name=test_mysql --env="MYSQL_ROOT_PASSWORD=123" mysql
我使用docker inspect test_mysql
获得了IP地址。IP是172.17.0.2
。
奇怪的是,当我尝试使用
上的MySQL Server连接到MySQL Server时mysql -uroot -p123 -h 172.17.0.2 -P 3306
提出的错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '172.17.0.2' (51)
但是,如果我使用Localhost IP地址,则确实有效:
mysql -uroot -p123 -h 127.0.0.1 -P 3306
我的问题是为什么我无法连接到localhost
IP工作时使用docker inspect
结果?
1(local -Host IP工作时?让我们再次查看您的命令以启动容器:
docker run -d -p 3306:3306 --name=test_mysql --env="MYSQL_ROOT_PASSWORD=123" mysql
-p 3306:3306
将"绑定"主机的3306端口3306到容器的端口3306。结果,我们可以看到,如果有任何连接到端口3306,它们将被转发到容器的端口。因此,您在本地IP上的连接将起作用:
mysql -uroot -p123 -h 127.0.0.1 -P 3306
请参阅Docker页面上的更多详细信息
2(为什么我无法连接到容器使用Docker Inspect Result
看来您的容器已连接到默认的桥梁网络(Docker0可能具有IP:172.17.0.1在您的情况下(,默认情况下通常会在安装Docker时创建。您可以在Docker网络页面中找到更多详细信息。因此,在容器内,您可以"看到"桥梁(您可以尝试使用Ping命令",但是从您的本地主机中,它可能不知道如何找到/解决172.17.0.2您遇到了这个错误。