Рейтинг:0

Контейнер Docker не регистрирует имя хоста во внутреннем DNS Docker

флаг jp

Я использую Docker для реализации службы Nextcloud. Для этого я использую официальный образ nextcloud-apache, обратный прокси-сервер Nginx, certbot и MariaDB. Ничего особенного, правда.

Мой экземпляр докера работает в режиме роя. Все контейнеры запускаются вместе с диспетчером на одном хосте только с одной репликой для каждой службы, стандартные оверлейные сети. Рой запускается с помощью стандартного компоновочного файла.

Моя установка стабильно работала в течение многих месяцев, пока прошлой ночью она загадочным образом не сломалась.Насколько я вижу, не было никаких обновлений или перезапусков, ни для ОС (Ubuntu Server LTS), ни для Docker-CE, ни для каких-либо образов (я делаю все свои обновления вручную через равные промежутки времени и, конечно же, не делал их в 4 утра вчера вечером). Я отследил причину контейнера Nextcloud (но я думаю, что это проблема Docker, поэтому мой вопрос здесь...):

В журнале обратного прокси-сервера Nginx отображается следующая строка:

06.04.2022 20:16:45 [ошибка] 10#10: *3 приложение nextcloud не может быть разрешено (3: Хост не найден), клиент: 10.135.40.1, сервер: <отредактировано>, запрос: "GET / HTTP/1.1", хост: "<отредактировано>"

Nginx не может разрешить внутренний сервер и возвращает клиенту ошибку 502/Bad Gateway.

Я проверил, и имя хоста для контейнера Nextcloud («nextcloud-app») действительно не зарегистрировано во внутреннем DNS докера (доступно по адресу 127.0.0.11 в каждом контейнере). Я могу войти в любой из контейнеров и запустить DNS-запрос (после запуска после обновления apt-get && apt-get install iputils-ping dnsutils внутри контейнера(ов)), имя «nextcloud-app» нигде не разрешается. Пример:

root@nextcloud-app:/var/www/html# nslookup nextcloud-app
Сервер: 127.0.0.11
Адрес: 127.0.0.11#53

** сервер не может найти приложение nextcloud: NXDOMAIN

Все остальные имена контейнеров разрешаются должным образом. Разрешение внешних адресов также работает. «nextcloud-приложение» — это Только неразрешимое имя контейнера.

Однако я может ping в контейнер nextcloud-app и из него, используя внутренние IP-адреса Docker напрямую. Связь есть, только разрешение DNS не работает.

Я понятия не имею, как отлаживать это дальше. Я неделю не трогал свой файл compose.yml. Насколько я знаю, ничего не изменилось. Однако установка перестала работать в одночасье.

Как я могу заставить контейнер Nextcloud зарегистрировать собственное имя хоста во внутреннем DNS докера? Любые предложения приветствуются.

Рейтинг:0
флаг jp

Я нашел решение. Этот ответ для бедняги, который, возможно, столкнется с той же проблемой в будущем.

Оказывается, это была не проблема докера. Ночью Nextcloud перешел в режим обслуживания (по причинам, которые пока неизвестны, это придется выяснить позже). Каким-то образом образ докера Nextcloud не смог зарегистрироваться в DNS Docker (из-за ошибки в образе?), когда находился в режиме обслуживания, и ситуация зашла в тупик: нет разрешения DNS, нет доступа к Nextcloud через обратный прокси --> не замечая, что Nextcloud находится в режиме обслуживания --> остается в режиме обслуживания навсегда, без разрешения DNS, ...

Если бы я только подумал проверить, не находится ли Nextcloud в режиме обслуживания, это могло бы сэкономить мне несколько часов отладки и головокружения. Вывод Nextcloud из режима обслуживания занял несколько минут. Чувствую себя немного глупо прямо сейчас. ;-)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.