То, что вы хотите сделать, это оценить ваши файлы в соответствии с определенным условным тестом и выполнить действие над каждым файлом в соответствии с результатом условного теста. Это точная цель команды 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
Или вы можете применить техники, приведенные в:
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...
Как я вижу, вы используете определяемые пользователем сети
и Docker Engine версии >= 1.10.
Итак, из официальной документации по движку Docker о встроенном DNS-сервере в определяемых пользователем сетях
:
Эти --dns IP-адреса управляются встроенным DNS-сервером и не будут обновляться в файле /etc/resolv.conf контейнера.
Ваш dns должен работать, но вы не увидите его ни в одном конфигурационном файле.
Я решил проблему, если это веб-приложение для контейнеров в Azure.
Есть 2 контейнера, приятель . Куду и хозяин
Шаги
1. Установите ssh из файла докера (, также включите конфигурацию sshd)
2.создайте containerstart.sh (, который обновляет resolv.conf)
3. Установите точку входа внутри
Теперь хост resolv.conf обновляется, и вы можете использовать любой DNS по своему желанию
PS :Если не получается подцепить кастомный DNS в сети не беда. Мы тоже не смогли. Может потребоваться перезагрузка, если вы используете среду ASE
.