【问题标题】:How to connect external service from docker service如何从 docker 服务连接外部服务
【发布时间】:2018-07-12 08:55:44
【问题描述】:

我是 docker 新手。我正在本地机器上运行 Postgresql(即在 Mac OS 上)。我的应用程序在 docker 中运行。我想要的是我的应用程序应该能够从 docker 访问 PostgreSQL(有很多生产数据,不能在 docker 上运行)服务。怎么做?谁能给我一个这样做的例子吗?

在此先感谢

【问题讨论】:

  • 您找到解决问题的方法了吗?
  • 是的。我知道了。 @tgogos
  • 然后,如果您发布自己的问题的答案并接受它(对于未来的用户)就可以了。更多信息:Can I answer my own question?

标签: docker docker-compose


【解决方案1】:

最后,我找到了在 docker 内部链接外部服务的解决方案。在docker-compose.yaml 中添加以下行:

    extra_hosts:
       my-local-host: 10.0.0.10 #Local machine IP
     environment:
       - SERVER=http://my-local-host:3000

【讨论】:

  • 这是 docker-compose 还是与 Docker Swarm 兼容?
  • docker-compose.yaml 的 sn-p 以上。 @维尼加斯
  • 希望这个更详细
【解决方案2】:

就我而言(我在 Ubuntu 上运行 docker)有一个 docker0 网络接口,主机使用 IP 172.17.0.1。每个将附加到 默认网络 的容器都将获得 172.17.0.X 范围内的 IP。这样,容器就可以通过与172.17.0.1[:port] 交谈来访问在主机上运行的服务,因为它们在同一个网络上......

但是,Docker for Mac 的情况有所不同...

发件人:Networking features in Docker for Mac

已知限制、用例和解决方法

以下是 Docker for Mac 网络堆栈当前限制的摘要,以及一些解决方法的想法。 macOS 上没有docker0 网桥

由于 Docker for Mac 中的网络实现方式,您在 macOS 中看不到docker0 接口。这个接口其实在HyperKit内。

用例和解决方法

我想从容器连接到主机上的服务

Mac 有一个不断变化的 IP 地址(如果您没有网络访问权限,则没有)。从 17.12 开始,我们的建议是连接到特殊的仅适用于 Mac 的 DNS 名称 docker.for.mac.host.internal,它解析为主机使用的内部 IP 地址。

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 2023-04-10
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多