Docker:无法访问容器主机/端口

时间:2016-11-14 19:42:28

标签: docker boot2docker docker-machine

我有一个容器

ps -a
de3ff650fbef        tasklist-img         "/bin/sh -c 'java -ja"   2 minutes ago       Up 2 minutes               8080/tcp, 0.0.0.0:8080->8081/tcp   tasklist-img-01

无法访问localhost:8080 / task-list

当我检查时,我的IP地址为172.17.0.2的json,它也无法访问

},
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "82398f58a56f6685223df13f0e053c1ad388505ff595ec270eb4e9a445109641",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8080/tcp": null,
                "8081/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/82398f58a56f",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "e8d9d3e209e858d6e881295899949df457fd8ca28cb059105bebceb6015e1e7d",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "24ef0b8e2aea470b5a0c4e48b96e5b203ea35b291689fe6d73b71b870c86f659",
                    "EndpointID": "e8d9d3e209e858d6e881295899949df457fd8ca28cb059105bebceb6015e1e7d",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02"
                }
            }

我的docker机器在ip 192.168.99.100下运行 我使用命令

运行容器
docker run -d -p  8080:8081 --name tasklist-img-01 tasklist-img

我可以访问http://192.168.99.100:8080/,它只返回dropwizard指标,http://192.168.99.100:8080/task-list/无法访问

我也记录了

INFO  [2016-11-14 19:32:29,324] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
INFO  [2016-11-14 19:32:29,402] org.eclipse.jetty.setuid.SetUIDListener: Opened application@522a32b1{HTTP/1.1}{0.0.0.0:8080}
INFO  [2016-11-14 19:32:29,402] org.eclipse.jetty.setuid.SetUIDListener: Opened admin@35390ee3{HTTP/1.1}{0.0.0.0:8081}
INFO  [2016-11-14 19:32:29,406] org.eclipse.jetty.server.Server: jetty-9.2.z-SNAPSHOT
INFO  [2016-11-14 19:32:30,428] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:

    GET     /task-list (com.bjedrzejewski.tasklistservice.TaskListResource)
    GET     /task-list/big (com.bjedrzejewski.tasklistservice.TaskListResource)

INFO  [2016-11-14 19:32:30,435] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@378bd86d{/,null,AVAILABLE}
INFO  [2016-11-14 19:32:30,450] io.dropwizard.setup.AdminEnvironment: tasks =

    POST    /tasks/log-level (io.dropwizard.servlets.tasks.LogConfigurationTask)
    POST    /tasks/gc (io.dropwizard.servlets.tasks.GarbageCollectionTask)

WARN  [2016-11-14 19:32:30,451] io.dropwizard.setup.AdminEnvironment:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!    THIS APPLICATION HAS NO HEALTHCHECKS. THIS MEANS YOU WILL NEVER KNOW      !
!     IF IT DIES IN PRODUCTION, WHICH MEANS YOU WILL NEVER KNOW IF YOU'RE      !
!    LETTING YOUR USERS DOWN. YOU SHOULD ADD A HEALTHCHECK FOR EACH OF YOUR    !
!         APPLICATION'S DEPENDENCIES WHICH FULLY (BUT LIGHTLY) TESTS IT.       !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
INFO  [2016-11-14 19:32:30,456] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@7b60c3e{/,null,AVAILABLE}
INFO  [2016-11-14 19:32:30,486] org.eclipse.jetty.server.ServerConnector: Started application@522a32b1{HTTP/1.1}{0.0.0.0:8080}
INFO  [2016-11-14 19:32:30,487] org.eclipse.jetty.server.ServerConnector: Started admin@35390ee3{HTTP/1.1}{0.0.0.0:8081}

所以我无法理解我的微服务在哪里?:)))

1 个答案:

答案 0 :(得分:2)

看起来您已将容器的端口8081映射到主机的8080

docker run -d -p  8080:8081

还有端口正在监听80808081

INFO  [2016-11-14 19:32:30,486] org.eclipse.jetty.server.ServerConnector: Started application@522a32b1{HTTP/1.1}{0.0.0.0:8080}
INFO  [2016-11-14 19:32:30,487] org.eclipse.jetty.server.ServerConnector: Started admin@35390ee3{HTTP/1.1}{0.0.0.0:8081}

您可以访问它,当然,但这不是容器的真正8080。 您可能需要发布端口范围

docker run -d -p  8080-8081:8080-8081