将Docker映像作为容器运行(适用于Windows用户)

时间:2018-09-08 17:10:41

标签: java docker dockerfile

我从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]
----------------------------------------------------------

我不知道为什么该应用程序无法正常工作? !

2 个答案:

答案 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本身中打开端口。这样您的主机操作系统就可以访问来宾操作系统的端口。

请参见https://www.simplified.guide/virtualbox/port-forwarding