无法从外部访问从命令行启动的dockerized应用程序

我已经用Ruby和一些gem构build了一个Docker镜像作为我的项目的起点。 它可在: jikkujose/trial 。 我正在使用默认的docker-toolbox在Mac上试试。

我正在尝试使用它来托pipe单个文件的应用程序。 我正在启动它,如下所示:

docker run -itdP -v .:/app jikkujose/docker

当前目录包含一个文件app.rb ,内容如下:

 require 'sinatra' class App < Sinatra::Base set :bind, "0.0.0.0" get '/' do 'This is interesting :)' end end App.run! 

我可以附加到容器来启动应用程序。 以下是我在做的时候看到的: docker ps -a

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 92498cafd985 jikkujose/trial "/bin/bash" 18 seconds ago Up 18 seconds 0.0.0.0:32780->4567/tcp boring_meitner 

而我正在尝试使用通过docker-machine ip default获取的ip访问应用程序。

尝试使用curl访问应用程序时,出现以下情况:

 curl: (7) Failed to connect to 192.168.99.100 port 32780: Connection refused 

 Failed to connect to 192.168.99.100 port 32780: Connection refused 

这应该表示没有监听器,或者,因为docker exec <container id> curl http://localhost:4567确实有效,所以侦听器不接受来自广播的查询,只能从localhost接收查询。

你的入口点和cmd是 :

 ENTRYPOINT ["/opt/rubies/ruby-2.2.2/bin/ruby"] CMD ["/app/app.rb"] 

检查是否其他人意味着推出一个sinatra应用程序将更好地与docker环境:例如“ Dockerizing简单的Sinatra应用程序使用docker和无花果 ”(无花果是docker写作的旧名称)

在此之前,检查映射端口是否在VirtualBox级别转发 :

 VBoxManage controlvm boot2docker-vm natpf1 "name,tcp,127.0.0.1,32780,,32780"