我按如下方式构建了我的容器:
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:8080或http://192.168.0.26:8080访问它。当我运行docker inspect 9e7d92c27e39 | grep IPA
时,IP地址为NULL或“”。最后,DOCKER_HOST
设置为unix:///var/run/docker.sock
。
我无法弄清楚如何在浏览器中或通过curl访问容器。
答案 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 CLI(DOCKER_HOST
命令)应如何连接到上面提到的Docker daemon(docker
)。