Docker IPAddress空:无法访问容器

我build立我的容器如下:

docker build -t microservicedemo/corenlp . 

接下来,我跑了:

 docker run -P -d --name corenlp microservicedemo/corenlp 

和dockerps -a显示:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e7d92c27e39 microservicedemo/corenlp "java -Djava.secur..." 4 seconds ago Up 2 seconds 0.0.0.0:32768->8080/tcp corenlp 

但是我无法通过http:// localhost:8080或http://192.168.0.26:8080访问它。 当我运行docker inspect 9e7d92c27e39 | grep IPA docker inspect 9e7d92c27e39 | grep IPA ,IP地址是NULL或“”。 最后, DOCKER_HOST被设置为unix:///var/run/docker.sock

我无法弄清楚如何通过浏览器或通过curl访问容器。

看看docker ps的输出:

 PORTS 0.0.0.0:32768->8080/tcp 

这显示容器的端口8080被发布到主机的端口号32768.这是你应该连接的地方。 您需要发送请求到http://<your docker host ip>:32768不是http://<your docker host ip>:8080

请注意, docker run-P选项使得Docker将所有已发布的容器端口映射到主机上的随机端口,所以下次运行容器8080时可能不会再映射到32768了! 如果要避免这种情况,可以明确地映射端口:

 docker run -p 8888:8080 -d --name corenlp microservicedemo/corenlp 

该命令将容器的端口8080映射到Docker主机上的8888端口( -p <host port>:<container port> )。

编辑

Docker主机IP是运行Docker守护程序的机器(承载图像,容器,卷等的服务)的IP。 在Linux的情况下,你安装Docker的机器(默认)。 在Windows和OSX的情况下,它是docker机器的IP。 DOCKER_HOSTvariables决不会连接到Docker发布端口的IP地址。 它只是定义了Docker CLI ( docker命令)应该如何连接到上面提到的Docker守护进程 ( dockerd )。