У меня возникают трудности с пересылкой портов в контейнерах докеров. Сначала я попытался переправить порты для существующего контейнера. Тогда я понимаю, что это невозможно. Поэтому я попытался выполнить команду docker run (создать новый контейнер из образа докера).Docker - Не удается переместить порты для интерактивной оболочки
docker run -p 8080:8080 -td <image_id>
Я проверил команду docker ps и показал эти порты под заголовком «Порты». Но я использовал -d (Run container in background) здесь. Так что это сработало, я думаю.
Но мне действительно нужна интерактивная оболочка, и здесь я хочу переправить некоторые порты.
В основном я пытаюсь запустить приложение Ruby On Rails (необходимо перенаправить порты 3000, 3306 и т. Д.) В этот контейнер, и я установил все программное обеспечение и рельсы gem и т. Д. И запустил сервер в этой интерактивной оболочке. Но я не знаю, как пересылать порты для интерактивной оболочки.
Я попытался следующие:
docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i <image_id> /bin/bash
Здесь интерактивные работы оболочки, но порты не пересылается.
EDIT: шагов я следовал:
$ docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i 5c62899c063f /bin/bash
[email protected]:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[email protected]:/# cd home/
[email protected]:/home# cd rails/
[email protected]:/home/rails# ls
my_project
[email protected]:/home/rails# cd my_project/
[email protected]:/home/rails/my_project# ls
Gemfile Gemfile.lock README.rdoc Rakefile app bin config config.ru db lib log public test tmp vendor
[email protected]:/home/rails/my_project# rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-03-15 05:57:14] INFO WEBrick 1.3.1
[2016-03-15 05:57:14] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-03-15 05:57:14] INFO WEBrick::HTTPServer#start: pid=113 port=3000
Тем не менее, когда я иду на локальный хост: 3000, я не могу получить доступ к применению. Интересно, в чем проблема с переадресацией портов в интерактивном контейнере оболочки docker. Как я уже упоминал выше, «Переадресованные порты ничего не показывают» при перечислении контейнеров. Поэтому я сомневаюсь, что команда перенаправления портов с опцией -p не работает с интерактивной оболочкой.
Решение: Что я сделал, чтобы решить эту проблему в соответствии с ответом от VonC
Что ты имеешь в виду 'Но я не знаю, как передать порты для интерактивного shell'? Вторая команда, которую вы пишете, работает не так, как вам нужно? Если да, то почему? – Auzias
@Auzias Я имею в виду -i вариант здесь. -it дает мне терминал для работы с контейнером. Но с этой опцией, как я упоминал выше, порты не пересылаются. Я не знаю почему.Я имею в виду, что после запуска «docker run -p 3000: 3000 -p 3001: 3001 -p 3306: 3306 -p 5432: 5432 -t -i/bin/bash», порты не пересылаются. Переадресованные порты ничего не показывают. –
Abhi