LINUX.ORG.RU
ФорумAdmin

docker,virtualbox - проброс портов ?

 ,


0

1

Добрый день!

Есть следующая конструкция.

  • Есть реальная физическая машина
  • На этой машине развернута виртуальная машина (virtualbox, ubuntu server, ip = 192.168.1.80)
  • На этой вирутальной машине развернут контейнер docker (суть, еще одна виртуализация). IP=172.17.0.2. На этой машине поднято web приложение.

Если обращаться к web-приложению с машины 192.168.1.80 по URL http://172.17.0.2 - то все работает.

Нужно сделать, чтобы это web приложение было доступно с реальной физической машины.

Для начала я хочу понять, как вообще это можно сделать.

Первый вариант, поставить на виртуальную машину (192.168.1.80) nginx и в его конфигах прописать, чтобы он входящие запросы переадресовывал на адрес 172.17.0.2. Как я понимаю, это должно заработать ?

Может есть более простой способ (без nginx), чтобы запрос поступающий на 192.168.1.80 переадресовать контейнеру, который развернут на этой машине ?

★★

Да, забыл добавить- в настройках виртуальной машины стоит Bridged Networking.

lemas ★★ ()
Ответ на: комментарий от dtm

Оно уже стоит.

Давай я еще раз поясню проблему. Мне надо обратиться к контейнеру из веб-браузера.

Я могу попробовать это сделать по ip контейнера - но он, как я понимаю, не виден за пределами той машины, где этот контейнер развернут (в моем случае виртуальной).

Я могу обрататься по ip виртуальной машины, где развернут контейнер, но должно быть что-то, что скажет этой виртуальной машине переадресовать этот запрос контейнеру, который на ней развернут.

lemas ★★ ()
Ответ на: комментарий от lemas

Да - попробовал вариант с Nginx (proxy_pass) - работает. Если это делается как то по-другому - поправьте меня :)

lemas ★★ ()
Ответ на: комментарий от lemas

Как-то странно получается. У меня контейнер пробрасывает свои порты в хостовую ось. Можешь через iptables проброс портов сделать.

dtm ()
Ответ на: комментарий от dtm

У меня тоже пробрасывает. Но хостовая ось - это не та машина, с которой мне надо достучаться до контейнера (прочитай еще раз мое первое сообщение).

Я пытаюсь обратиться к контейнеру не с хостовой оси, а с совершенно другого компьютера.

lemas ★★ ()
Ответ на: комментарий от dtm

Так об этом и был первоначальный вопрос - как это правильно сделать. Я решил задачу с помощью nginx. Это правильно ? Или по другому делать надо ?

lemas ★★ ()
Ответ на: комментарий от lemas

Вариант 2:

docker run -n=false -lxc-conf="lxc.network.type = veth" -lxc-conf="lxc.network.ipv4 = 192.168.3.7/24" -lxc-conf="lxc.network.ipv4.gateway = 192.168.3.49" -lxc-conf="lxc.network.link = docker0" -lxc-conf="lxc.network.name = eth0" -lxc-conf="lxc.network.flags = up" -i --name=apache -t mydebian:apache

Где 192.168.3.7 - ip контейнера из той же подсети, что и VB с хостом, который ты хочешь ему выдать, 192.168.3.49 - IP виртуалбокса. Ну и бридж в виртуалбоксе должен быть настроен с контейнером.

strangeman ★★★★ ()
Последнее исправление: strangeman (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.