首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器向http发送请求

Docker容器向http发送请求
EN

Stack Overflow用户
提问于 2020-05-25 12:17:37
回答 1查看 2.6K关注 0票数 0

嗨我有个问题。

我使用码头组合ver3和领事映像作为容器,在我的主机上,我有一个简单的服务,应该响应http请求,它设置在端口40001上。因此,现在我希望通过http (换句话说,从docker容器向运行在主机上的服务发送请求),让docker向此服务发送请求作为健康检查。

我为领事撰写的船坞很简单:

代码语言:javascript
复制
version: '3'

services:

  consul:
  image: consul:latest
  command: consul agent -dev -log-level=warning -ui -client=0.0.0.0
  hostname: consul
  container_name: consul
  ports:
    - 8500:8500
    - 8600:8600/udp
    - 40000-41000:40000-41000

所以我启动这个容器,主机上的服务在里面注册,使用http健康检查地址在主机上使用"http://localhost:40005//Health“进行服务检查。请求的间隔大约是15秒,所以我期望这样的请求到达服务时,服务将响应200。

此外,我也可以进入UI的领事在集装箱。

好的,主机上的服务不会注册任何传入的请求,但有趣的是,当我运行独立领事时,它工作正常(也就是说,我正在进行健康检查)。

所以我的问题是,这可能是容器无法与主机上的服务通信的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-25 12:43:08

例如,假设您在主机上的端口5555上运行了一个服务。

以下是四种解决方案,如果您想要从码头容器与主机通信:

  1. 您在linux上:为了联系您的主机,您需要通过默认的网桥网络IP与其联系。通常,它被称为docker0,它的IP地址类似于172.17.0.1 (您必须检查这些值)。 服务地址为http://172.17.0.1:5555
  2. 您在Mac 上:从Docker18.03开始,命令就是使用特殊的DNS名称host.docker.internal (这是医生)。 服务地址将是http://host.docker.internal:5555
  3. 您在Windows上:解决方案与用于文档的Docker的解决方案相同。 服务地址将是http://host.docker.internal:5555
  4. All OS:您有一个指向您的服务的静态公共IP或DNS名称,您可以只使用它。 服务地址将是http://[host_public_ip_or_dns]:5555
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62002249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档