Я хочу установить запись типа файла хоста для указанного c имени домена ИЗ МОЕЙ ПРИЛОЖЕНИЯ ВНУТРИ контейнера docker. Например, я хочу, чтобы приложение в контейнере разрешало x.com:192.168.1.3
автоматически, без какого-либо внешнего ввода или конфигурации. Я понимаю, что это нетрадиционно по сравнению с каноническими docker вариантами использования, так что не говорите мне об этом:)
Я хочу, чтобы мой код в определенной ветви использовал другое имя хоста: отображение ip для определенный домен c. И я хочу, чтобы он делал это автоматически и без вмешательства хоста, демона docker или конечного пользователя, выполняющего контейнер. В идеале это сопоставление должно происходить на уровне инфраструктуры контейнера, а не какой-либо модификации кода приложения, которая выполняла бы это сопоставление самостоятельно.
Как мне это делать?
Почему это сложно?
Файл /etc/hosts
в контейнере docker доступен только для чтения и не может быть изменен изнутри контейнера. Это разработано и управляется демоном docker.
DNS для контейнера docker связан с DNS базового хоста несколькими способами и не умно слишком много возиться с этим.
Требования :
- Внутри контейнера домен
x.com
преобразуется в не- стандартный предварительно настроенный IP-адрес. - Контейнер - это стандартный Docker контейнер, работающий на хосте неопределенной конфигурации.
Ограничения:
- Я не могу передать конфигурацию как флаг времени выполнения (например,
--add-host
). - Я не могу открыть сопоставление извне (например, установить запись DNS на хост-компьютере) .
- Я не могу изменить базовый хост или рассчитывать на его настройку определенным образом.
открытые вопросы: можно задать Записи DNS изнутри контейнера и переопределение хоста DNS только для контейнера? если да, то какой хороший легкий инструмент с низким уровнем управления для этого (например, DNSmasq
, coredns
)?
есть ли какие-нибудь маги c, с помощью которых я могу выдать себя за файл /etc/hosts
или добавить предварительно обработанный файл перед ним в цепочке разрешений?