我按如下方式构建了容器:
docker build -t microservicedemo/corenlp .
接下来,我运行它:
docker run -P -d --name corenlp microservicedemo/corenlp
和坞站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地址为空或"“。最后,将DOCKER_HOST
设置为unix:///var/run/docker.sock
。
我不知道如何在浏览器中或通过curl访问容器。
发布于 2017-11-09 17:42:04
查看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主机(-p <host port>:<container port>
)上的8888端口。
编辑
Docker主机IP是运行Docker daemon的机器的IP (托管镜像、容器、卷等的服务)。对于Linux,它是安装Docker的机器(默认情况下)。在Windows和OSX上,它是docker-machine的IP地址。DOCKER_HOST
变量根本没有连接到Docker发布端口的IP。它只是定义了Docker CLI (docker
命令)应该如何连接到上面提到的Docker daemon (dockerd
)。
https://stackoverflow.com/questions/47195085
复制相似问题