仅针对REST请求,从一个Docker容器到另一个容器的连接拒绝错误

时间:2018-06-19 19:56:06

标签: docker spring-boot docker-network

我有两个docker容器apiserver和loginserver。它们都提供REST API,并使用Spring Boot构建。我创建了一个名为my-network的网桥网络,并且两个容器都连接到同一网桥。 我通过交互式外壳从apiserver ping了loginserver,它是可访问的。我从主机发出REST请求,所以我知道套接字暴露了。但是,当我从apiserver向loginserver发出相同的REST请求时,出现错误:

: HttpQueryService::uri=http://172.28.0.7:8090/users/login
2018-06-19 19:08:24.196 ERROR 7 --- [nio-9000-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

org.apache.http.conn.HttpHostConnectException: Connect to 172.28.0.7:8090 [/172.28.0.7] failed: Connection refused (Connection refused)

以下是我的网络中的详细信息:

docker network inspect my-network

[
    {
        "Name": "my-network",
        "Id": "ef610688b58b6757cba57caf6261f7a1eaeb083798098214c4848cbb152cae26",
        "Created": "2018-04-21T00:19:46.918124848Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.28.0.0/16",
                    "Gateway": "172.28.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "71863d2f61789d4350fcabb1330b757500d5734a85c68b60eb1ac8f6f1e8344e": {
                "Name": "mymongo",
                "EndpointID": "717c8dbdc8993a70f9d3e97e549cb9784020b8e68e7a557c30b0818b4c9acb90",
                "MacAddress": "02:42:ac:1c:00:02",
                "IPv4Address": "172.28.0.2/16",
                "IPv6Address": ""
            },
            "936447ce8325f3a7273a7fb462d75e55841a9ff37ccf27647831b3db1b8a1371": {
                "Name": "mypg",
                "EndpointID": "6a1a1b2f7852b89a9d2cb9b9abecdabd134849cd789c31613c7ddb91a4bc43d1",
                "MacAddress": "02:42:ac:1c:00:06",
                "IPv4Address": "172.28.0.6/16",
                "IPv6Address": ""
            },
            "ad03348dffaef3edd916d349c88e8adf6cf7d88dbc40f82dc2384dee826cfa83": {
                "Name": "myloginserver",
                "EndpointID": "fe22c2b5f57b7fe4776087972ffa5f7f089ca6a59fde2fa677848b3f238ea026",
                "MacAddress": "02:42:ac:1c:00:07",
                "IPv4Address": "172.28.0.7/16",
                "IPv6Address": ""
            },
            "c69bfbf9ccdc9e29e87d2847b5c2a51e9c232fb8d06635bcef0cdd1f7c66e051": {
                "Name": "apiserver",
                "EndpointID": "46e94a52d34670eb00448b1d39a0cc365b882ece790c9d868dcee04ad141d1ca",
                "MacAddress": "02:42:ac:1c:00:0b",
                "IPv4Address": "172.28.0.11/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

2 个答案:

答案 0 :(得分:1)

您的loginserver映像是否公开了8090端口?用于检查的命令

docker images 

,然后找到您的登录服务器图像的ImageID。然后输入命令

docker inspect image {Login server image id}

在输出中检查ExposedPorts(是否暴露8090)

答案 1 :(得分:0)

迟到聚会了,但是我只是通过设置地址以获取public IP address来获得REST请求的方式来解决此问题:

例如:http://217.114.203.196/myrequest