使用boot2docker向windows上的主机公开docker容器应用程序端口

使用boot2docker向windows上的主机公开docker容器应用程序端口,docker,boot2docker,Docker,Boot2docker,到目前为止,我已经: 在WIN7上安装了boot2docker 1.6.0 使用ubuntu:14.01基本映像创建了一个容器 安装并提交了一个应用程序,现在我有了一个新的映像“Demoest_core” 我遇到的问题是,当我使用此命令启动容器时 docker run -it --name demotest --rm -p 127.0.0.1:15000:1500 -v /c/Users/b101/shared:/mnt/shared ubuntu/demotest_core bin/bash

到目前为止,我已经:

  • 在WIN7上安装了boot2docker 1.6.0
  • 使用ubuntu:14.01基本映像创建了一个容器
  • 安装并提交了一个应用程序,现在我有了一个新的映像“Demoest_core”
  • 我遇到的问题是,当我使用此命令启动容器时

    docker run -it --name demotest --rm -p 127.0.0.1:15000:1500 -v /c/Users/b101/shared:/mnt/shared ubuntu/demotest_core bin/bash
    
    容器启动后,我将
    cd
    转到我的应用程序目录并启动应用程序(它是一个在端口1500上运行的web应用程序)。应用程序在容器上成功启动,当我执行
    netstat
    时,我可以在侦听模式下看到它。我想在我的主机WIN7系统上访问此应用程序,但当我尝试
    http://127.0.0.1:15000
    我收到连接被拒绝错误

    使用另一个终端,我可以清楚地看到端口映射已就位,但我无法在主机上访问它

    C:\Users\b101>docker port demotest
    1500/tcp -> 127.0.0.1:15000
    
    我也尝试过这个命令,认为首先我需要公开端口,然后映射它,但它不起作用

    docker run -it --name demotest --expose 1500 --rm -p 127.0.0.1:15000:1500 -v /c/Users/b101/shared:/mnt/shared ubuntu/demotest_core bin/bash
    

    如果您使用的是docker机器,则该端口在VM中公开,而不是在本地Win7机器中公开

    -p 127.0.0.1:15000:1500
    更改为仅
    15000:1500
    ,然后尝试在
    docker机器IP默认值
    中给定的IP地址访问端口
    15000


    您不能在端口映射中使用127.0.0.1,因为这只会绑定到本地接口,无法从VM外部访问该接口。

    后续问题1-在容器启动后,我是否可以公开/映射容器上运行的应用程序端口?2-如何使容器在启动时运行脚本,例如:从repo/共享驱动器复制一些文件,并将其部署到我的应用程序服务器并启动应用程序服务器?请以新问题的形式提问后续问题,而不是在评论中提问。但是1)不,至少不,除非你玩IP表等2)看看DockerFiles中的ENTRYPOINT和CMD指令,为生活在2016年第一季度的人们,而不是
    boot2docker IP
    我们现在必须使用
    docker machine ls
    来发现IP或
    docker machine ls | awk'{print$5}'
    @pulkitsinghal updated。你可以运行docker机器ip btw。