curl - Docker容器:容器之间的 curl 不起作用

标签 curl networking docker ports

我在同一网络中有多个Docker容器。我正在尝试在containerA上使用curl从test01.docker container上的API获取结果。

我在容器A上运行以下命令:

curl -s test-01.docker:8031/app?status -v

输出如下:
* Hostname was NOT found in DNS cache
*   Trying 172.19.0.24...
* connect to 172.19.0.24 port 8031 failed: Connection refused
* Failed to connect to test-01.docker port 8031: Connection refused
* Closing connection 0

当我尝试使用以下命令从containerA ping test01.docker时:
ping test-01.docker

成功了

当我执行docker ps时,它显示以下信息。在我的
43823212be7e        mytestimage        "/docker-entrypoint.s"   53 seconds ago       Up 47 seconds       22/tcp, 2812/tcp, 5060-5061/tcp, 6970-6971/tcp, 8002/tcp, 8030-8031/tcp, 8033/tcp, 8071/tcp, 8888/tcp, 9020-9023/tcp   containerA

这表明端口8031已暴露。我无法弄清楚为什么curl失败了。当我在test-01.docker上运行以下命令时,它给我正确的输出:
curl -s localhost:8031/app?status

不知道为什么它不能在同一网络中的其他容器上工作。请告诉我我是否缺少什么。

更新:我的docker-compose文件如下所示:
  version: '2'

  services:
    test-01.docker:
      image: ##############
      expose:
        - 22
        - 2812
        - 8031
      hostname: test-01
      domainname: docker

最佳答案

似乎在test-01.docker内部运行的应用程序在127.0.0.1上侦听,因此该容器之外的任何其他程序都无法访问它

让您的应用程序(在test-01.docker内部)监听0.0.0.0地址,然后重试

关于curl - Docker容器:容器之间的 curl 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420308/

相关文章:

php - 使用变量调用函数时,简单的 Curl 脚本不返回任何数据

java - 每秒 100 万次远程函数调用

linux - 运行多个进程无法扩展

docker - 错误层=rpc 写入响应 :write tcp 127. 0.0.1 :40000->127. 0.0.1:41558:使用关闭的网络连接

php - 使用 php 和 curl 抓取客户端证书请求

curl - Databricks:将 dbfs:/FileStore 文件下载到我的本地机器?

docker - 无法从 pod 容器内访问 kubernetes api

Docker Swarm - 将请求路由到所有容器

http - 如何查询elasticsearch获取两个时间戳之间的数据

c++ - 将数据发送到 IP 地址列表 - C++