我目前正在学习Docker(在Windows和Linux上使用它)并且有一件事我无法理解,我认为用一个例子可以更好地解释它。
我运行MySQL容器暴露端口,然后通过MySQL Workbench等MySQL客户端连接到它。在Linux / Ubuntu上,我可以通过其运行的IP地址连接到容器内运行的数据库:
docker inspect CONTAINER_NAME
这对我来说非常有意义,这就是我连接到服务器上运行的数据库的方式。
但是,在Windows上,这种方法不起作用。我实际上必须连接到 localhost
而不是容器的IP。我知道这与Windows容器在Linux VM中运行这一事实有关,但在这种情况下,我应该使用VM的IP地址连接到它。
有人可以向我解释为什么它的工作方式有效吗?我很难理解它(我还是一名初级开发人员),我宁愿理解它是如何工作的,而不仅仅是记住不同操作系统的命令/ IP。
如果我尝试使用容器的IP连接,它只是说它无法连接到给定的IP地址:10:19:43无法连接,服务器可能没有运行。无法连接到'172.17.0.2'(10060)上的MySQL服务器
—
Jeremi
localhost:3306
连接到[CONTAINER_NAME]:3306
。但默认情况下MySQL在任何地方都不会绑定0.0.0.0
通过bind-address: 0.0.0.0
在my.cnf
在容器中。或者MySQL的用户权限已连接到localhost
而不是通配符%
。你的错误信息究竟是什么?