Я использую 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 докера? Любые предложения приветствуются.