我在同一个网络中有多个docker容器。我试图在containerA上使用curl从test01.docker容器上的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
答案 0 :(得分:0)
似乎在test-01.docker中运行的应用程序侦听127.0.0.1,因此该容器外的任何其他程序都无法访问它
让你的应用程序(在test-01.docker中)监听0.0.0.0地址并再次尝试