当前位置: 首页 > 面试题库 >

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

茅华灿
2023-03-14
问题内容

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

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

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


问题答案:

该泊坞窗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


 类似资料:
  • 问题内容: 错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’(2)连接到本地MySQL服务器 我尝试了在互联网上找到的所有内容,但是无法解决在Ubuntu 11.04上出现的问题。 我尝试了这些事情: 使用手动启动mysqld 使用启动mysqld 检查它是否正在使用并获得结果 在手动创建文件 授予用户权限 试图删除并重新安装,但仍然无法正常工作

  • 问题内容: 上传或提交页面时,我的网站上出现以下错误: mysql_real_escape_string()[function.mysql-real-escape- string]:无法通过套接字’/var/lib/mysql/mysql.sock’连接到本地MySQL服务器(2) 这到底是什么意思? 问题答案: 由于对该错误的调用引发了错误,因此它意味着您没有先调用该错误并将有效的数据库句柄传递

  • 我最近尝试用自制软件安装MySQL(),当我尝试运行它时,我遇到以下错误: 错误2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2) 没有

  • 我正在使用PhpStorm 2018.3.4,Docker,MySQL和Ubuntu。我试图配置MySQL与Docker容器不成功。 首先,我尝试了以下配置: 它给了我这个错误: 然后,我试了一下: 这个给了我另一个错误。 我错过什么了吗?有没有其他地方我必须配置一些东西? 输出: 这里: 对于命令,这里是描述的链接:https://pastebin.com/9LmeAkc8 下面是docker-

  • 问题内容: 当我在测试套件中尝试连接到本地MySQL服务器时,它失败并显示以下错误: 但是,我始终可以通过运行命令行mysql程序连接到MySQL 。A 显示服务器正在运行,并 确认套接字存在。此外,如果在except该异常的子句中打开调试器,则可以使用完全相同的参数可靠地进行连接。 这个问题可以相当可靠地重现,但是似乎不是100%,因为每当我遇到一次蓝月亮时,我的测试套件就可以运行而不会遇到此错

  • 问题内容: 我在尝试连接mysql时遇到大问题。当我跑步时: 我有以下错误: 我的确在目录下。 在我有: 并且在我有: 我已经使用重新启动了Apache 但是我仍然有错误。 否则,我不知道这是否相关,但是当我得到时 问题答案: 如果您的文件my.cnf(通常在 / etc / mysql / 文件夹中)已正确配置为 您可以使用以下命令检查mysql是否正在运行: 尝试将您的权限更改为mysql文件