无法从外部访问从命令行启动的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"