【问题标题】:Connecting to localhost mysql server from inside docker container on macOS从 macOS 上的 docker 容器内部连接到 localhost mysql 服务器
【发布时间】:2017-08-21 17:20:40
【问题描述】:

如何从 macOS 上的 docker 容器连接到 localhost mysql 服务器? 一种使用 --add-host 的方法,但这需要我传递一些名称,例如“myhost”。 在 macOS 中有什么方法可以让 docker 容器内部对 localhost 的引用实际上是指 docker host ?

【问题讨论】:

  • --network="host" 在 macOS 上不起作用。

标签: mysql macos docker osx-elcapitan


【解决方案1】:

在 MacOS 上,docker 提供特殊的 DNS 名称docker.for.mac.localhost,它将解析为主机使用的内部 IP 地址。

【讨论】:

    【解决方案2】:

    使用host.docker.internal

    连接到运行 Docker 的主机。 这仅适用于 docker 版本 18.03 及以后的版本,这是出于开发目的,不适用于 Docker Desktop for Mac 之外的生产环境。 (更多信息请参考页面https://docs.docker.com/docker-for-mac/networking/

    oracle 的示例连接字符串,jdbc:oracle:thin:@host.docker.internal:1521/orcl

    From inside of a Docker container, how do I connect to the localhost of the machine?

    【讨论】:

      【解决方案3】:

      您应该能够使用主机实际 IP 地址连接到在主机上运行的 MySql。在 MacOS 中,尝试通过命令ifconfig 查找您的 ip。主要使用分配给en0 的 IP,即您的以太网接口应该可以工作。只需从您的容器中调用该 IP。

      *localhost 或 127.0.0.1 或 0.0.0.0 不会调用主机,因为它们是容器本身的本地。

      【讨论】:

      • 是的,我能够使用 ip 连接到 docker host mysql 服务器。但是由于默认的 mysql 安装绑定到 127.0.0.1 ,我必须在配置文件中编辑它并添加一个具有适当权限的新用户才能从容器应用程序连接。
      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 2021-11-09
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多