@wasserbord

Docker — как пробросить порт с хоста в контейнер без --net=host?

На хосте запущен сервер - пусть будет порт 1234.
С хоста по localhost:1234 можно без проблем к нему подкл.

Однако из контейнера не выходит.

А если включить --net=host, то другие фичи данной проги в контейнере (клиента) перестают работать. Поэтому нужен более аккуратный вариант.

Уже устанавливать в докера iptables
docker exec golos-default /bin/bash -c "apt-get update"
docker exec golos-default /bin/bash -c "apt-get install -y iptables"
После чего делал так:
docker exec golos-default /bin/bash -c "iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 172.17.0.2:1234"
Что такое 172.17.0.2 - это результат ip route show | grep docker0, запущенного на хост-машине.

Начало истории тут Как в Ubuntu сделать (желательно без туннелей), чтобы приложение (клиент) при попытке подключиться к ip1:port подключалось к ip2:порт?

Правда вот еще момент
netstat -tlnp
...
tcp 0 0 127.0.0.1:27017
Это на хосте.
Это проблема?
  • Вопрос задан
  • 1856 просмотров
Пригласить эксперта
Ответы на вопрос 1
planc
@planc
повесь сервис на 172.17.0.1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы