【问题标题】:Connecting to docker container from outside docker-compose container从 docker-compose 容器外部连接到 docker 容器
【发布时间】:2019-07-18 10:46:49
【问题描述】:

我们的两项服务

我们有 LXV virtual-machine-1,我们有 docker-compose 和 service-1 和其他服务。 我们还有另一个 LXV virtual-machine-2,我们有 docker-compose 和 service-B 和新的其他服务。假设这两个服务使用端口 80 和 81

问题

如何在单独的 LXV 虚拟机的单独 docker 组合中从 service-1 连接到 service-B

我们尝试了什么

我们通过添加映射服务 1 和virtual-machine-1 的 IP 地址来更改 LXV virtual-machine-2 上的 hosts 文件。 virtual-machine-1 有一个转发代理,它被配置并将请求转发到service-1

ping service-1telnet service-1 80 来自 virtual-machine-2 工作。 但是,相同的 ping 在 docker-compose of virtual-machine-2 的容器内不起作用。

【问题讨论】:

  • 您不必触摸 ip 或 hosts 文件即可在同一 docker compose 网络中的容器之间进行连接。他们已经有一个内部 dns 将容器名称指向他们的 ip 地址。您应该可以使用 virtual-machine-2:81
  • 您是否使用 Overlay 作为网络驱动程序而不是默认的网桥连接器? docs.docker.com/network
  • 驱动程序:网桥。 Docker-compose v2.1

标签: docker docker-compose containers


【解决方案1】:

事实证明,docker 容器有默认的hosts 文件。所以我们需要将service-B的IP映射记录添加到hosts文件到service-1容器hosts文件中。 为此,我们修改了启动 sh 脚本。

【讨论】: