Folosesc Docker pentru a implementa un serviciu Nextcloud. Pentru aceasta, folosesc imaginea oficială nextcloud-apache, un proxy invers Nginx, certbot și MariaDB. Nimic special, într-adevăr.
Instanța mea docker rulează în modul roi. Toate containerele rulează împreună cu managerul pe aceeași gazdă, cu o singură replică pentru fiecare serviciu, rețele standard de suprapunere. Roiul este pornit folosind un fișier de compunere standard.
Configurația mea a funcționat stabil de multe luni, până aseară, când s-a stricat în mod misterios.Din câte văd, nu au existat actualizări sau reporniri, nici pentru sistemul de operare (Ubuntu Server LTS), Docker-CE sau oricare dintre imagini (fac toate actualizările manual la intervale regulate și cu siguranță nu le-am făcut la 4 dimineața aseară). Am găsit cauza în containerul Nextcloud (dar cred că aceasta este o problemă Docker, de unde întrebarea mea aici...):
Jurnalul pentru proxy-ul invers Nginx arată următoarea linie:
2022/04/06 20:16:45 [eroare] 10#10: *3 nextcloud-app nu a putut fi rezolvată (3: Gazda nu a fost găsită), client: 10.135.40.1, server: <redacted>, cerere: „GET / HTTP/1.1", gazdă: "<redactat>"
Nginx nu poate rezolva serverul de backend și trimite un gateway 502/Bad înapoi clientului.
Am verificat, iar numele de gazdă pentru containerul Nextcloud ("nextcloud-app") nu este într-adevăr înregistrat în DNS-ul intern al docker (disponibil sub 127.0.0.11 în fiecare container). Mă pot autentifica la oricare dintre containere și pot declanșa o solicitare DNS (după rulare după apt-get update && apt-get install iputils-ping dnsutils
în interiorul containerelor), numele „nextcloud-app” nu este rezolvat nicăieri. Exemplu:
root@nextcloud-app:/var/www/html# nslookup nextcloud-app
Server: 127.0.0.11
Adresa: 127.0.0.11#53
** serverul nu poate găsi nextcloud-app: NXDOMAIN
Toate celelalte nume de containere se rezolvă așa cum ar trebui. Rezolvarea adreselor externe funcționează, de asemenea. „nextcloud-app” este numai nume de container nerezolvabil.
oricum eu poate sa ping către și de la containerul nextcloud-app utilizând direct adresele IP interne ale docker-ului. Conectivitatea este acolo, doar rezoluția DNS eșuează.
Nu am idee cum să depanez asta mai departe. Nu mi-am atins fișierul compose.yml o săptămână. Din câte știu eu, nimic nu s-a schimbat. Cu toate acestea, configurația a încetat să funcționeze peste noapte.
Cum pot forța containerul Nextcloud să-și înregistreze propriul nume de gazdă la DNS-ul intern al docker-ului? Orice sugestii sunt apreciate.