El contenedor Docker no registra el nombre de host en el DNS interno de Docker

El contenedor Docker no registra el nombre de host en el DNS interno de Docker

Utilizo Docker para implementar un servicio Nextcloud. Para esto, utilizo la imagen oficial de nextcloud-apache, un proxy inverso de Nginx, certbot y MariaDB. Nada especial, en realidad.

Mi instancia de Docker se ejecuta en modo enjambre. Todos los contenedores se ejecutan junto con el administrador en el mismo host con solo una réplica para cada servicio, redes superpuestas estándar. El enjambre se inicia utilizando un archivo de redacción estándar.

Mi configuración funcionó estable durante muchos meses, hasta anoche, cuando se rompió misteriosamente. Por lo que veo, no hubo actualizaciones ni reinicios de ningún tipo, ni para el sistema operativo (Ubuntu Server LTS), Docker-CE ni ninguna de las imágenes (hago todas mis actualizaciones manualmente a intervalos regulares y ciertamente no las hice en 4 am anoche). Localicé la causa en el contenedor Nextcloud (pero creo que es un problema de Docker, de ahí mi pregunta aquí...):

El registro del proxy inverso de Nginx muestra la siguiente línea:

2022/04/06 20:16:45 [error] 10#10: *3 nextcloud-app could not be resolved (3: Host not found), client: 10.135.40.1, server: <redacted>, request: "GET / HTTP/1.1", host: "<redacted>"

Nginx no puede resolver el servidor backend y devuelve un 502/Bad Gateway al cliente.

Lo verifiqué y el nombre de host del contenedor Nextcloud ("nextcloud-app") no está registrado en el DNS interno de la ventana acoplable (disponible en 127.0.0.11 en cada contenedor). Puedo iniciar sesión en cualquiera de los contenedores y activar una solicitud de DNS (después de ejecutarla after apt-get update && apt-get install iputils-ping dnsutilsdentro de los contenedores), el nombre "nextcloud-app" no se resuelve en ninguna parte. Ejemplo:

root@nextcloud-app:/var/www/html# nslookup nextcloud-app
Server:     127.0.0.11
Address:    127.0.0.11#53

** server can't find nextcloud-app: NXDOMAIN

Todos los demás nombres de contenedores se resuelven como deberían. Resolver direcciones externas también funciona. "nextcloud-app" es lasolonombre del contenedor irresoluble.

Sin embargo, yopoderHaga ping hacia y desde el contenedor de la aplicación nextcloud utilizando directamente las direcciones IP internas de Docker. La conectividad está ahí, solo falla la resolución DNS.

No tengo idea de cómo depurar esto más. No toqué mi archivo compose.yml durante una semana. Hasta donde yo sé, nada ha cambiado. Sin embargo, la configuración dejó de funcionar de la noche a la mañana.

¿Cómo puedo forzar al contenedor Nextcloud a registrar su propio nombre de host en el DNS interno de Docker? Se agradece cualquier sugerencia.

Respuesta1

Encontré la solución. Esta respuesta es para el pobre que tal vez enfrente el mismo problema en el futuro.

Resulta que, después de todo, no fue un problema de Docker. Nextcloud entró en modo de mantenimiento durante la noche (por razones aún desconocidas, tendremos que investigar eso a continuación). De alguna manera, la imagen de la ventana acoplable de Nextcloud no pudo registrarse en el DNS de Docker (¿debido a un error en la imagen?) cuando estaba en modo de mantenimiento y la situación se estancó: no hay resolución de DNS, no hay acceso a Nextcloud a través del proxy inverso -> sin darme cuenta de que Nextcloud está en modo de mantenimiento -> permanecer en modo de mantenimiento para siempre, sin resolución DNS, ...

Si tan solo hubiera pensado en verificar si Nextcloud estaba en modo de mantenimiento, podría haberme ahorrado varias horas de depuración y quebraderos de cabeza. Sacar a Nextcloud del modo de mantenimiento fue/es cuestión de unos minutos. Me siento un poco estúpido ahora mismo. ;-)

información relacionada