我在同一网络中有多个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/