Прочитать ifconfig хоста в работающем Docker-контейнере - PullRequest
1 голос
/ 05 ноября 2019

Я хотел бы прочитать вывод ifconfig хоста во время выполнения контейнера Docker, чтобы иметь возможность проанализировать его и получить IP-адрес интерфейса OpenVPN (tap0) и обработать его в моем приложении.

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

Текущийрабочее решение - это CRON на хосте, который записывает IP-адрес в файл на общем томе, а контейнер считывает с него, - но я ищу лучшее решение, которое кажется мне обходным путем. Кроме того, планировалось создать новый контейнер с network: host, который будет видеть интерфейсы хоста - он работает, но также выглядит как обходной путь, поскольку включает в себя много шагов и, возможно, проблемы безопасности.

IУ меня есть вопрос, есть ли какой-нибудь действительный и более чистый способ достижения моей цели - читать ifconfig хоста в Docker-контейнере в реальном времени?

1 Ответ

1 голос
/ 05 ноября 2019

Конкретная цель разработки Docker заключается в том, чтобы контейнеры не могли напрямую получить доступ к конфигурации сети хоста. Обходные пути, которые вы определили, являются практически единственным способом сделать это.

Если вы пытаетесь каким-либо образом изменить конфигурацию сети хоста (например, вы пытаетесь запустить VPN)вам, вероятно, лучше запустить его за пределами Docker. В любом случае, вам все равно понадобится разрешение root, но вам не нужно будет отключать кучу стандартных ограничений, чтобы делать то, что вам нужно.

Если вы пытаетесь указать какой-либо адрес, по которому можно обратиться к службетребуется использование конфигурации, например, переменной среды. Даже если вы можете получить доступ к конфигурации хоста, это может быть не тот адрес, который вам нужен: рассмотрите облачную среду, в которой вы работаете на облачном экземпляре за балансировщиком нагрузки, а внешним клиентам нужен балансировщик нагрузки;это не то, что вы можете узнать напрямую, учитывая только сетевую конфигурацию хоста.

...