我创建了两个容器;一个正在运行 spring boot eureka 名称服务器,另一个正在运行 java 应用程序。这两个容器在同一个桥接网络上。
NETWORK ID NAME DRIVER SCOPE
4554021e2f79 docker_ambuli bridge local
docker container ls
的缩短输出:
0de2fa36c342 ambuli/ms-1:0.0.1-SNAPSHOT 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp
878eb80bc7e4 ambuli/ms-2:0.0.1-SNAPSHOT 0.0.0.0:8761->8761/tcp, :::8761->8761/tcp
容器的IP地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 0de2fa36c342
172.27.0.3
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 878eb80bc7e4
172.27.0.2
docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' 4554021e2f79
是说两个容器在这个
网络。
一切似乎都很好。但是,Java 抛出连接超时异常。 通过wireshark跟踪,我可以看到SYN消息是从172.27.0.3(myService)发送到172.27.0.2(nameing-server)的。但是,没有回复。
java错误是: 例外是 org.apache.http.conn.ConnectTimeoutException:连接到命名服务器:8761 [命名服务器/172.28.0.2] 失败:连接超时
任何帮助将不胜感激。非常感谢。
我有以下yaml文件:
version: '3'
services:
naming-server:
image: ambuli/ms1-naming-server:0.0.1-SNAPSHOT
mem_limit: 700m
ports:
- "8761:8761"
networks:
- ambuli
my-service:
image: ambuli/ms1-myservice:0.0.1-SNAPSHOT
mem_limit: 700m
ports:
- "8000:8000"
networks:
- ambuli
links:
- naming-server
depends_on:
- naming-server
environment:
EUREKA.CLIENT.SERVICEURL.DEFAULTZONE: http://naming-server:8761/eureka
networks:
ambuli: