Docker容器之间的连接

3
  1. 我有一个docker-compose.yml文件,其中创建了两个容器:A和B。
  2. B是一个运行在8000端口上的Web服务器,在我的docker-compose文件中我暴露了端口8000。
  3. A在我的docker-compose文件中与B相连。

但是当我对B进行GET请求时,我收到一个错误信息:

GET http://localhost:8000 dial tcp 127.0.0.1:8000 refused

我该如何修复它?

docker-compose ps 只告诉我端口是 8000/tcp


1
能否提供docker-compose.yml文件?您可以编辑您的问题并发布它吗? - Greg
docker-compose updocker ps的输出是什么?它们应该提供有关容器IP和端口的信息。 - ivan.sim
1个回答

4
你能展示一下你的docker-compose.yml文件吗?在两个容器之间使用的名称实际上创建了一个别名,就像localhost127.0.0.1的别名一样:https://docs.docker.com/compose/yml/#links 因此,在你的GET请求中,你不应该连接到localhost。相反,使用在服务B链接中使用的名称,并在其后加上端口号。这是一个包含适当的GET请求URL的示例配置文件: docker-compose.yml:
service_a:
    image: service_a_image
    ports:
        - 7000 # maps port to host
    links:
        - service_b
service_b:
    image: serivce_b_image
    expose:
        - 8000 # exposes port to other containers

从 A 服务获取到 B 服务的 URL:

http://service_b:8000

希望这可以帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接