为什么我需要使用“localhost”连接到Windows上的Docker MySQL DB?


0

我目前正在学习Docker(在Windows和Linux上使用它)并且有一件事我无法理解,我认为用一个例子可以更好地解释它。

我运行MySQL容器暴露端口,然后通过MySQL Workbench等MySQL客户端连接到它。在Linux / Ubuntu上,我可以通过其运行的IP地址连接到容器内运行的数据库:

docker inspect CONTAINER_NAME

这对我来说非常有意义,这就是我连接到服务器上运行的数据库的方式。

但是,在Windows上,这种方法不起作用。我实际上必须连接到 localhost 而不是容器的IP。我知道这与Windows容器在Linux VM中运行这一事实有关,但在这种情况下,我应该使用VM的IP地址连接到它。

有人可以向我解释为什么它的工作方式有效吗?我很难理解它(我还是一名初级开发人员),我宁愿理解它是如何工作的,而不仅仅是记住不同操作系统的命令/ IP。


1
我没有发布答案,因为我不是100%肯定,但我相信你的问题是Docker本身的MySQL配置不允许网络。意思是,端口转发正在发生 localhost:3306 连接到 [CONTAINER_NAME]:3306。但默认情况下MySQL在任何地方都不会绑定 0.0.0.0 通过 bind-address: 0.0.0.0my.cnf 在容器中。或者MySQL的用户权限已连接到 localhost 而不是通配符 %。你的错误信息究竟是什么?
JakeGould

如果我尝试使用容器的IP连接,它只是说它无法连接到给定的IP地址:10:19:43无法连接,服务器可能没有运行。无法连接到'172.17.0.2'(10060)上的MySQL服务器
Jeremi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.