一尘不染

如何通过Docker连接到本地MySQL服务器?

docker

这是关于如何通过Docker连接到本地服务的更普遍的问题。有在Github上的问题类似的问题在这里,似乎并未有任何决议。我真正想要的是能够针对本地开发MySQL服务器在本地进行开发,然后一旦准备好进行部署,就可以针对新创建的部署候选docker映像进行本地测试。

理想情况下,两者都可以从同一位置获取设置,所以我可以放mysql_server:host_ip。这似乎是一个典型的用例。目前有这种可能吗?

我正在将Boot2Docker专门用于MySQL服务器,而不是在主机Mac OS XYosemite上运行的MySQL服务器,而不是在容器中。能够为将来的读者提供更一般的答案会很酷。


阅读 1278

收藏
2020-06-17

共1个答案

一尘不染

泊坞窗CLI文档给这个解决方案(假定你是一个Linux主机上运行):

有时您需要从容器内部连接到Docker主机。为此,请使用该--add- host标志将Docker主机的IP地址传递到容器。要查找主机的地址,请使用ip addr show命令。

传递给您的标志ip addr show取决于您在容器中使用的是IPv4还是IPv6网络。将以下标志用于名为的网络设备的IPv4地址检索eth0

$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
$ docker run  --add-host=docker:${HOSTIP} --rm -it debian

然后,docker容器内的名称将映射到主机的IP地址。对于您的情况,您可以使用docker run --add- host=mysql_server:$(hostip) ...

如果使用Boot2Docker,它将在预定义的地址处建立到主机的映射,因此在该平台上,与上述命令等效的只是一个命令:

$ docker run  --add-host=docker:192.168.59.3 --rm -it debian
2020-06-17