我从dockerfile构建了docker映像。我看到图像已成功构建(
$ docker images
),以及当我使用此命令将图像作为容器运行时:
$ docker run -i -t 8dbd9e392a96
我的应用程序已成功运行,但是当我尝试打开该消息时
无法访问此网站
这是我的图像列表:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
blog latest b9c52b9f2999 About an hour ago 143MB
openjdk 8-jre-alpine 14a48fdee8af 3 days ago 83MB
和我的容器列表:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4dbb68c87813 b9c52b9f2999 "./entrypoint.sh" 27 minutes ago Up 27 minutes 8080/tcp dazzling_shirley
使用docker image运行应用程序后,我得到了以下结果:
----------------------------------------------------------
Application 'blog' is running! Access URLs:
Local: http://localhost:8080
External: http://172.17.0.2:8080
Profile(s): [dev, swagger]
----------------------------------------------------------
我不知道为什么该应用程序无法正常工作? !
答案 0 :(得分:1)
您必须将Docker容器端口映射到主机端口。原因是docker容器是一个隔离的环境,它的公共IP与主机相同。您必须确保主机知道何时将请求重定向到容器。因此,当您将主机端口映射到docker容器端口时,所有发送到HOST_IP_ADDRESS:HOST_PORT的请求都将重定向到其端口映射到HOST_PORT的docker容器。
您可以在使用-p
命令的同时通过使用docker run
标志来做到这一点,如下所示:
docker run -it -p 8080:8080 IMAGE_NAME
现在,所有发送到localhost:8080的请求都将定向到在容器中运行的应用程序。
答案 1 :(得分:0)
您是否正在使用Windows的docker工具箱。 Windows上的Docker工具箱在基于Linux的virtualbox vm中运行docker。您可能必须在虚拟盒VM本身中打开端口。这样您的主机操作系统就可以访问来宾操作系统的端口。