我在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