连接器在Docker容器上被拒绝

我是新来的Docker,并试图做一个演示Rails应用程序。 我做了一个dockerfile,看起来像这样:

FROM ruby:2.2 MAINTAINER marko@codeship.com # Install apt based dependencies required to run Rails as # well as RubyGems. As the Ruby image itself is based on a # Debian image, we use apt-get to install those. RUN apt-get update && apt-get install -y \ build-essential \ nodejs # Configure the main working directory. This is the base # directory used in any further RUN, COPY, and ENTRYPOINT # commands. RUN mkdir -p /app WORKDIR /app # Copy the Gemfile as well as the Gemfile.lock and install # the RubyGems. This is a separate step so the dependencies # will be cached unless changes to one of those two files # are made. COPY Gemfile Gemfile.lock ./ RUN gem install bundler && bundle install --jobs 20 --retry 5 # Copy the main application. COPY . ./ # Expose port 8080 to the Docker host, so we can access it # from the outside. EXPOSE 8080 # The main command to run when the container starts. Also # tell the Rails dev server to bind to all interfaces by # default. CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "8080"] 

我然后像这样构build它:

 docker build -t demo . 

然后调用一个命令启动服务器,在8080端口启动服务器:

 Johns-MacBook-Pro:demo johnkealy$ docker run -it demo => Booting WEBrick => Rails 4.2.5 application starting in development on http://0.0.0.0:8080 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2016-04-23 16:50:34] INFO WEBrick 1.3.1 [2016-04-23 16:50:34] INFO ruby 2.2.4 (2015-12-16) [x86_64-linux] [2016-04-23 16:50:34] INFO WEBrick::HTTPServer#start: pid=1 port=8080 

然后我尝试find正确的IP导航到:

 Johns-MacBook-Pro:demo johnkealy$ docker-machine ip default 192.168.99.100 

我导航到http://192.168.99.100:8080,并得到错误本网站不能达到192.168.99.100拒绝连接。

我可能做错了什么?

您需要使用以下选项发布公开的端口:

-P(大写)或–publish –这将告诉Docker使用主机中的随机端口,并将它们映射到公开的容器的端口。

-p(小写)或–publish = [] ,它会告诉Docker使用手动设置的端口并将它们映射到公开容器的端口。

第二个选项是首选,因为你已经知道哪些端口映射。 如果你使用第一个选项,那么你将需要调用docker inspect demo并检查你的主机端口部分正在使用哪个随机端口。

只需运行以下命令:

 docker run -it -p 8080:8080 demo 

之后,你的url将工作。

如果您在窗口10家中使用Docker工具包 ,则需要通过docker-machine ip命令访问网页。 一般是192.168.99.100:

假定您正在使用下面的发布命令运行。

 docker run -it -p 8080:8080 demo 

使用Window 10专业版可以访问本地主机或相应的环回127.0.0.1:8080等(Tomcat或任何你想要的)。 这是因为您没有虚拟框,Docker直接在Window Hyper V上运行,并且可以直接访问环回。

validation窗口中的主机文件是否有任何离题。 它应该有127.0.0.1映射到本地主机