Я играю с boot2docker (docker 1.6) на окнах 8.1. Я хотел сделать себе контейнер для машины, чтобы играть с рубином, и я хочу иметь возможность подключиться к серверу rails с моего хоста 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 машине я Агинского
wget localhost:3000
и получить
Connecting to localhost:3000 (127.0.0.1:3000)
wget: error getting response: Connection reset by peer
Так что, похоже, как порт 3000 не корректно перенаправлены на boot2docker VM. Что я сделал не так? Что я упустил? Я много раз искал Google и пробовал пару вещей, таких как явное раскрытие порта из файла docker или добавление переключателя -P для запуска, но я всегда заканчиваю тем же способом - он не работает.
Любая помощь будет принята с благодарностью.
UPDATE 02.05.2015
Я также попытался вещи, описанные в комментарии от Markus W Mahlberg и réponse от VonC. Моя конфигурация VM, похоже, в порядке, я также проверил в GUI VirtualBox, и это кажется прекрасным. Некоторые подробнее: Когда я начинаю
boot2docker ssh -vnNTL 3000:localhost:3000
, а затем откройте локальный: 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 говорит мне, что ответ был пуст. От проверки журналов на контейнере я знаю, что запрос так и не дошел до него.
Конец обновления
Update 03.05.2015
я вещь, что моя проблема не так много, чтобы сделать с boot2docker или грузчиком, как с моей конфигурации компьютера. Я много раз над своей конфигурацией docker/boot2docker, что маловероятно, что я совершил ошибку там.
Отчаянно я переустановил boot2docker и VirtualBox, все равно никаких эффектов. Любые идеи отладки, что может быть неправильным в моей конфигурации? Только другая идея - попробовать сделать то же самое на другой машине. Но даже если это работает, моя оригинальная проблема не менее раздражает.
Конец обновления
Вот мой dockerfile:
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
Эти порты открыты только для виртуальной машины, на которой запущен демон докеров. Подробнее см. Http://acaird.github.io/computers/2014/11/16/docker-virtualbox-host-networking/. –
@MarkusWMahlberg спасибо за ссылку, но я все это делал раньше. Еще есть шанс, что я сделал что-то не так, но я понятия не имею, что. Я вижу, что кажется правильной конфигурацией в графическом интерфейсе VM после настройки перенаправления портов. – mindriven