curl localhost从一个docker容器连接到另一个docker容器

时间:2018-04-19 15:06:59

标签: docker curl

我关注docker-compose并在本地运行:

version: '3.4'
services:
  testservice.api:
    image: testservice.api
    build:
      context: .
      dockerfile: Services/.../Dockerfile
    ports:
      - "5101:80"
  sql.data:
    image: postgres.jchem
    build:
      context: ../db/postgres
      dockerfile: Dockerfile
    ports:
      - "5432:5432"
      - "9090:9090"

现在在sql.data容器中我尝试执行curl http://localhost:5101/...
但是我得到退出代码(7)连接失败了 当我尝试通过curl http://testservice.api/...进行连接时,它可以正常工作 为什么我无法与localhost:port联系?如何通过curl localhost:port

完成从docker容器到另一个容器的连接

2 个答案:

答案 0 :(得分:3)

  

为什么我无法使用localhost:port连接?

那是因为每个容器都有自己的网络接口,因此它拥有自己的本地主机'。

  

如何通过curl localhost:port从docker容器内连接到另一个容器?<​​/ p>

您可以在每个撰写服务中使用network_mode: "host",因此每个容器都使用相同的主机网络接口。不过,我建议您调整您的应用程序以使其可配置,以便将其服务依赖关系URL作为参数(例如)。

答案 1 :(得分:0)

当你在容器内部说localhost时,它将读作容器本身。使容器能够与其他容器通信。您需要确保这些容器连接在同一网络上,然后您可以尝试通过其DNS(其服务名称)或其容器IP访问它们。