我正在使用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机器上,我再次执行相同操作。
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