Docker переопределяет мои Файл /etc/resolv.conf внутри контейнеров

То, что вы хотите сделать, это оценить ваши файлы в соответствии с определенным условным тестом и выполнить действие над каждым файлом в соответствии с результатом условного теста. Это точная цель команды find.

Вот переносимая (POSIX-совместимая) команда для удаления обычных файлов, содержимое которых включает "0" или "7":

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

Обратите внимание, что эта рекурсивно ищет в текущем каталоге.

Если это не то, что вам нужно, вы можете проверить, доступен ли первичный -maxdepth (в этом случае вы также можете использовать первичный -delete; ни один из них не определен POSIX):

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

Или вы можете применить техники, приведенные в:

17
12.01.2020, 13:22
3 ответа

AFAIK, докер переопределяет некоторые файлы в образе, когда он запускается , даже если они были ДОБАВЛЕНЫ в Dockerfile. Это обязательно включает / etc / hosts , и, скорее всего, то же самое происходит и с /etc/resolv.conf . Очевидно, это используется для правильного построения «внутренней» сети Docker по умолчанию (чтобы изображения видели друг друга, но не хост и т. Д.). Если вы действительно уверены , что хотите переопределить / изменить некоторые из них файлы, я считаю, что вы должны делать это как часть действий среды выполнения, то есть как часть строки CMD . Например:

...
ADD resolv.conf /etc/resolv.conf.override
CMD cp /etc/resolv.conf.override /etc/resolv.conf && \
        your_old_commands...
20
27.01.2020, 19:47

Как я вижу, вы используете определяемые пользователем сети и Docker Engine версии >= 1.10. Итак, из официальной документации по движку Docker о встроенном DNS-сервере в определяемых пользователем сетях:

Эти --dns IP-адреса управляются встроенным DNS-сервером и не будут обновляться в файле /etc/resolv.conf контейнера.

Ваш dns должен работать, но вы не увидите его ни в одном конфигурационном файле.

References.

6
27.01.2020, 19:47

Я решил проблему, если это веб-приложение для контейнеров в Azure.

Есть 2 контейнера, приятель . Куду и хозяин

Шаги

1. Установите ssh из файла докера (, также включите конфигурацию sshd)

2.создайте containerstart.sh (, который обновляет resolv.conf)

3. Установите точку входа внутри

Теперь хост resolv.conf обновляется, и вы можете использовать любой DNS по своему желанию

PS :Если не получается подцепить кастомный DNS в сети не беда. Мы тоже не смогли. Может потребоваться перезагрузка, если вы используете среду ASE

.
1
27.01.2020, 19:47

Теги

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