当前位置: 首页 > 面试题库 >

码头集装箱上的连接被拒绝

彭华皓
2023-03-14
问题内容

我是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"]

然后,我像这样构建它:

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

然后,我尝试找到正确的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-all ,它们将告诉Docker使用来自主机的随机端口并将它们映射到暴露的容器的端口。

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

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

只需运行以下命令:

docker run -it -p 8080:8080 demo

之后,您的网址即可使用。



 类似资料:
  • 我们有计划实施AWS弹性豆茎与多集装箱码头。我有一个对所有服务具有完全访问权限的IAM用户。我已经创建了docker图像,并成功地推到AWS弹性容器服务。当我使用AWS弹性Beanstalk将docker映像(.json)部署到服务器时,我遇到了以下问题。请指导我解决问题。我已经检查了IAM用户策略,并添加了Amazon ECS,弹性Beanstalk完全访问.我已经为您的引用列出了我的.json

  • 问题内容: 我是 HBase 和 Hadoop的 新手。我已经完全设置了HBase并完美启动。现在,当我尝试使用Java客户端从 p1 连接到HBase(HBase安装在 p2上 )时,它抛出了一个奇怪的异常。 问题答案: 我找到了解决方案。 通过仅从我的 主机中 删除 localhost 条目。现在我的本地主机条目就像 192.169.19.50 [这是我的hbase IP] =本地主机,而不是

  • 问题内容: 我正在尝试实现TCP连接,从服务器端一切正常,但是当我运行客户端程序(从客户端计算机)时,出现以下错误: 我尝试更改套接字号以防万一,但无济于事,有谁知道导致此错误的原因和解决方法。 服务器代码: 客户代码: 问题答案: 此异常意味着你尝试连接的IP /端口上没有侦听服务: 你试图连接到错误的IP /主机或端口。 你尚未启动服务器。 你的服务器没有监听连接。 在Windows服务器上,

  • 我无法连接到RabbitMQ。RabbitMQ不在本地计算机上。 我的应用程序.属性看起来像 我可以使用https://urltologinscreen:15671访问Rabbitmq gui 我得到以下错误 如何解决问题?

  • 我试着让我的selenium测试在debian服务器上运行,但是我一直从我的GeckoDriver得到连接拒绝错误。在运行Ubuntu的本地机器上,它运行得很好。你们谁知道怎么了?我找不到任何有用的东西。 OS:Debian Jessie 构建工具:Gradle Java-版本:8 设置方法 错误信息

  • 我想在伪分布式模式下设置一个hadoop-cluster。我设法执行了所有的设置步骤,包括在我的机器上启动一个Namenode、Datanode、Jobtracker和一个Tasktracker。 运行会得到如下输出(我用替换了其中的一部分): 启动和将导致以下输出: 在此之后不久调用将得到: 我还注意到不工作: