Docker IPAddress Empty:无法访问容器

时间:2017-11-09 06:16:38

标签: java docker

我按如下方式构建了我的容器:

docker build -t microservicedemo/corenlp .

接下来,我跑了它:

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

和docker ps -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:8080http://192.168.0.26:8080访问它。当我运行docker inspect 9e7d92c27e39 | grep IPA时,IP地址为NULL或“”。最后,DOCKER_HOST设置为unix:///var/run/docker.sock

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

1 个答案:

答案 0 :(得分:2)

查看docker ps的输出:

PORTS
0.0.0.0:32768->8080/tcp

这表明容器的端口8080已发布到主机的端口号32768.这是您应该连接的位置。您需要向http://<your docker host ip>:32768而不是http://<your docker host ip>:8080发送请求。

请注意-P的{​​{1}}选项使Docker将所有已发布的容器端口映射到主机上的随机端口,因此下次运行容器时8080可能不再映射到32768!如果要避免这种情况,可以显式映射端口:

docker run

此命令将容器的端口8080映射到Docker主机上的8888端口(docker run -p 8888:8080 -d --name corenlp microservicedemo/corenlp )。

修改

Docker主机IP是正在运行的计算机Docker daemon的IP(承载图像,容器,卷等的服务)。在Linux的情况下,它是你安装Docker的机器(默认情况下)。对于Windows和OSX,它是docker-machine的IP。 -p <host port>:<container port>变量绝不会连接到Docker发布端口的IP。它只定义Docker CLIDOCKER_HOST命令)应如何连接到上面提到的Docker daemondocker)。