【问题标题】:Docker Rails Server Refusing ConnectionsDocker Rails 服务器拒绝连接
【发布时间】:2016-02-23 09:30:17
【问题描述】:

我有使用 Dockerfile 设置的 Rail-Api 服务器,我试图从主机访问它,但在启动 rails 服务器并卷曲 Docker 容器后连接被拒绝。

卷曲

curl 192.168.99.100:32776

Docker 容器:端口

iptables -L on 'docker-machine ssh default'

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:5000
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:3000
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:ssh

Dockerfile

FROM centos:6.6

RUN yum update -y
RUN yum install git openssl-devel openssh-server sudo openssl readline-devel readline zlib-devel zlib libxml2-devel libxml2 libxslt-devel libxslt nginx tar gcc libaio libaio-devel -y
RUN rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.5.1-1.el6.x86_64.rpm
RUN sed -i -e "s/Defaults    requiretty.*/ #Defaults    requiretty/g" /etc/sudoers

RUN mkdir -p /var/run/sshd

RUN useradd -m -u 1000 -G wheel deploy && echo '%wheel  ALL=(ALL)  NOPASSWD: ALL' >> /etc/sudoers.d/wheel
USER deploy
RUN mkdir ~/dev

RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv/
RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

ENV PATH ~/.rbenv/bin:$PATH
RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
RUN source ~/.bash_profile
ENV CONFIGURE_OPTS --disable-install-doc

RUN rbenv install 2.2.3
RUN rbenv global 2.2.3
RUN bash -l -c 'gem update --system'
RUN bash -l -c 'gem update'
RUN bash -l -c 'gem install nokogiri -- --use-system-libraries'
RUN bash -l -c 'gem install bundler rails-api --no-rdoc --no-ri'

COPY oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
COPY oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
COPY oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm /tmp/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
RUN sudo rpm -Uvh /tmp/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

RUN sudo touch /etc/sysconfig/network

RUN NLS_LANG=American_America.UTF8
ENV ORACLE_HOME=/usr/lib/oracle/12.1/client64
ENV LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib

EXPOSE 22
EXPOSE 3000
EXPOSE 5000

【问题讨论】:

  • 你是如何启动你的容器的?另外,您如何从主机配置 entry 端口?
  • 我尝试过使用命令行`docker run -it -p ....`以及仅使用kitematic 来配置和运行容器。 @Rico
  • 你在 Mac 上运行 curl?
  • @Rico 是的,我在虚拟机内部也试过了
  • 你用什么完整的 docker 命令来启动应用程序?或者您使用什么命令来启动 Rails 服务器?另外,你可以 ssh 到容器吗?

标签: ruby-on-rails macos docker docker-machine


【解决方案1】:

我要大胆猜测一下,我认为您使用的是 Rails 4.2.x 或更高版本(这是今天的最新版本)及其绑定到 127.0.0.1 或/和 localhost 而不是 0.0.0.0 .也检查一下:What does binding a Rails Server to 0.0.0.0 buy you?

尝试运行:

bundle exec rails server -b0.0.0.0

【讨论】:

  • 我仍然没有得到回复。在您的回答中,您的意思是 server 而不是 console
  • 你有 iptables 吗?有没有机会在你的容器里?
猜你喜欢
  • 2016-11-28
  • 2015-09-01
  • 2020-01-26
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2019-10-23
  • 2021-03-23
  • 2020-06-10
相关资源
最近更新 更多