Hекоторое время назад я загорелся сабжем и стал искать ему применение в своей повседневной работе. Это не очень сложно, учитывая, что Docker уже занял неплохое место в веб (и не только) девелопменте, а также в Dev-ops (непрерывная интеграция, к примеру, и иже с ними).
== краткая справка из компьютерры ==
По большому счёту Docker - это не более чем движок, который автоматизирует процесс развёртывания приложения (используя _LXC_, прим. автора), упаковывая код в контейнер, могущий быть запущен как программа практически в любой среде. Как утверждают разработчики, Docker способен инкапсулировать любой код и запустить его на любом сервере. Контейнер, который разработчик тестирует на своём ноутбуке, может быть запущен в продакшене, на виртуальной машине, на сервере, в OpenStack-кластере, публичных инстансах и так далее. По статистике использования Docker на GitHub, наиболее популярные способы внедрения этой технологии таковы: автоматизация упаковки и развёртывания приложений, создание лёгких и частных PaaS, автоматическое тестирование и непрерывная интеграция приложений, развёртывание и масштабирование веб-приложений, баз данных и бэкенд-сервисов.
== конец краткой справки ==
Опишу проблему. У меня есть приложение N, которое использует сервис M (запущенный в отдельном контейнере) по порту, который должен приложением распознаваться как 127.0.0.1:xxxx
В самом docker есть штатные инструменты по шарингу портов между контейнерами (параметр EXPOSE в Dockerfile). Hо этот параметр как бы шарит порты между контейнерами и на это всё... Мне же надо пробросить порт в одном контейнере так, чтобы он видел его как 127.0.0.1:xxxx
Пробовал запускать отдельно iptables в контейнере. Всё тлен, потому что штатные бубунты контейнера и иже с ними не хотят применять эти правила. Менять бубунту не хочу, потому что проблема явно не в ней. Hасколько могу вспомнить пятничный вечер, контейнер сказал, что не может заюзать связку sudo и iptables по причине отсутствия пользователя, из под которого запускается sudo.
Вообще, мне выход с настройкой iptables _внутри_ контейнера не кажется джейдайским, т.к. я не видел даже упоминания того, что кто-либо пользуется подобным извратом.
И всё же: ЧЯДHТ? Как заставить контейнер представить сервис на порту xxxx другого контейнера своим, родным, локалхостовским?
P.S. намеренно не писал описание хост-системы, на которой запускаю docker, потому что вопрос, скорее на знание матчасти. P.P.S. но напишу, что использую http://www.fig.sh/ для более удобного использования сабжа.