Boot2Docker:无法使端口转发工作

时间:2015-05-01 19:03:30

标签: windows docker forwarding boot2docker ports

我在Windows 8.1上玩boot2docker(docker 1.6)。我想让自己的机器容器与ruby一起玩,我希望能够从我的Windows主机连接到rails服务器。首先从小步骤开始,我想从boot2docker VM连接到我的容器。我在下面附上我的docker文件,它构建没有问题,我可以从它运行一个容器。我是这样做的:

docker run -it -p 3000:3000 3564860f7afd /bin/bash

然后在这个容器中我说:

cd ~/myapp && bundle exec rails server -d

如果一切正常,我会这样做:

~/myapp$ sudo apt-get install wget && wget localhost:3000

我得到了http 500,这没关系,我只想检查服务器是否正在运行。然后我使用ctrl + p,ctrl + q退出。但是在boot2docker机器上我做了agin

wget localhost:3000

并获取

Connecting to localhost:3000 (127.0.0.1:3000)
wget: error getting response: Connection reset by peer

所以看起来端口3000没有正确转发到boot2docker VM。我做错了什么?我错过了什么?我广泛搜索并尝试了一些事情,比如从dockerfile明确暴露端口或添加-P开关来运行,但我总是以同样的方式结束 - 它不起作用。

非常感谢任何帮助。

更新02.05.2015

我也尝试了Markus W Mahlberg的评论中描述的内容和VonC的回应。我的VM配置似乎没问题,我也检查了VirtualBox的GUI,看起来很好。更多信息:当我开始

boot2docker ssh -vnNTL 3000:localhost:3000

然后在我的Windows主机上打开localhost:3000我在boot2docker控制台的跟踪日志中看到,它们看起来像这样:

debug1: channel 1: free: direct-tcpip: listening port 3000 for localhost port 3000, connect from 127.0.0.1 port 50512 to 127.0.0.1 port 3000, nchannels 3

Chrome告诉我,回复是空的。从检查容器上的日志开始,我就知道请求从未达到过。

更新结束

更新03.05.2015

我认为我的问题与boot2docker或docker没有太大关系,就像我的计算机配置一样。我已经多次使用docker / boot2docker配置了,我不太可能在那里犯错。

我拼命地重新安装了boot2docker和VirtualBox,仍然没有效果。任何想法如何调试我的配置可能出错?我只有其他想法是尝试在另一台机器上做同样的事情。但即使这样可行,我原来的问题也同样令人讨厌。

更新结束

这是我的dockerfile:

FROM ubuntu
MAINTAINER anonymous <anonymous@localhost.com>
LABEL Description="Ruby container"
# based on https://gorails.com/setup/ubuntu/14.10
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get -y install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
    && groupadd anonymous \
    && useradd anonymous -m -g anonymous -g sudo
ENV HOME /home/anonymous
USER anonymous

RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
RUN echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc
RUN exec $SHELL

RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
RUN echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
RUN exec $SHELL
RUN git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash

ENV PATH "$HOME/.rbenv/bin:$HOME/.rbenv/plugins/ruby-build/bin:$PATH"

RUN rbenv install 2.2.1
RUN rbenv global 2.2.1

ENV PATH "$HOME/.rbenv/shims:$PATH"

RUN echo 'gem: --no-ri --no-rdoc' > ~/.gemrc
RUN gem install bundler

RUN git config --global color.ui true
RUN git config --global user.name "mindriven"
RUN git config --global user.email "3dcreator.pl@gmail.com"
RUN ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa -C "3dcreator.pl@gmail.com"

RUN sudo apt-get -qy install software-properties-common python-software-properties
RUN sudo add-apt-repository ppa:chris-lea/node.js
RUN sudo apt-get -y install nodejs

RUN gem install rails -v 4.2.0
RUN ~/.rbenv/bin/rbenv rehash
RUN rails -v

RUN sudo apt-get -qy install mysql-server mysql-client
RUN sudo apt-get install libmysqlclient-dev
RUN rails new ~/myapp -d mysql
RUN sudo /etc/init.d/mysql start && cd ~/myapp && rake db:create

1 个答案:

答案 0 :(得分:0)

是的,您需要打开Virtualbox计算机中的端口:

enter image description here