Boot2Docker: не может заставить работать переадресацию портов
Я играю с boot2docker (Docker 1.6) на Windows 8.1. Я хотел сделать себя машинным контейнером для игры с ruby, и я хочу иметь возможность подключаться к rails server с моего хоста windows. Чтобы начать с небольших шагов, сначала я хочу подключиться к своему контейнеру с моей виртуальной машины boot2docker. Я прикрепляю свой файл докера ниже, он собирается без проблем, и я могу запустить контейнер из него. Я делаю это так:
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. Что я сделал не так? Что я упустил? Я много гуглил и пробовал несколько вещей, таких как явное выставление порта из dockerfile или добавление ключа -P для запуска, но я всегда получаю один и тот же способ - он не работает.
Любая помощь будет оценена.
ОБНОВЛЕНИЕ 02.05.2015
Я также попробовал вещи, описанные в комментарии от Маркуса В. Малберга и ответ от VonC. Моя конфигурация виртуальной машины, кажется, в порядке, я также проверил в графическом интерфейсе VirtualBox, и это выглядит нормально. Немного больше информации: когда я начинаю
boot2docker ssh -vnNTL 3000:localhost:3000
и затем откройте localhost: 3000 на моем хосте Windows, который я вижу в журналах трассировки в консоли 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, но все равно никаких эффектов. Любые идеи, как отладить, что может быть не так с моей конфигурацией? Единственная другая идея - попытаться сделать то же самое на другой машине. Но даже если это работает, моя первоначальная проблема не менее раздражает.
Конец обновления
Вот мой докер-файл:
FROM ubuntu
MAINTAINER anonymous <[email protected]>
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 "[email protected]"
RUN ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa -C "[email protected]"
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