¿No se pueden actualizar, enviar correos o recuperar temas... problema con Docker?

Hola,

En los últimos días hemos empezado a tener un problema repentino con el envío de correos electrónicos… luego hemos intentado actualizar/poner al día sin éxito (la página de actualización se cuelga y todos los componentes - docker, discourse, plugins - se quedan atascados en “Comprobando la nueva versión…”) y luego hemos intentado actualizar todo a través de root, pero la reconstrucción falla dando el siguiente mensaje (entre otras cosas):

fatal: unable to access 'https://github.com/discourse/discourse.git/': Could not resolve host: github.com

Nuestro host ha confirmado que no hay problemas con la conectividad del servidor, SSL, firewall ni nada más.

Sospecho que es algo con docker. Incluso he revisado este tema: Docker sometimes fails to connect to github.com - Installation - Discourse Meta y he probado:

# cd /var/discourse/
# ./launcher enter app
# wget -O - -v https://github.com/discourse/logster.git/ |wc

y obtuve lo siguiente:

--2025-02-28 09:45:51--  https://github.com/discourse/logster.git
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
      0       0       0

¿Alguna idea sobre cómo abordar este problema?

¿Está operando en un territorio especial como China continental?

Verificaré el DNS en su host y luego el DNS en su docker.

verificar DNS en su host:

resolvectl status|egrep Servers
nslookup github.com

verificar DNS en su docker

docker exec -it app bash -c "cat /etc/resolv.conf"
docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
1 me gusta

Ok, entonces:

en DNS del host:

#resolvectl status|egrep Servers
DNS Servers: 8.8.8.8
Fallback DNS Servers: 8.8.8.8
DNS Servers: 8.8.8.8 8.8.4.4
#nslookup github.com
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name:   github.com
Address: 140.82.112.3

En DNS de Docker:

#docker exec -it app bash -c "cat /etc/resolv.conf"
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.

nameserver 8.8.8.8
nameserver 8.8.4.4

# Based on host file: '/etc/resolv.conf' (legacy)
# Overrides: [nameservers]
#docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
--2025-02-28 12:20:17--  https://github.com/discourse/logster.git/
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
      0       0       0

P.D.: Nuestro host opera en Canadá.

Gracias… No tengo ni idea de cómo podría suceder esto, pero no soy un experto en Docker.

¿Cuál es tu sistema operativo host y cómo instalaste Discourse? ¿Usaste un paquete proporcionado por la compañía de hosting, o es una instalación estándar? (¿O una instalación de desarrollo??) ¿Cómo instalaste Docker?

Pero esto solía funcionar y luego dejó de hacerlo, así que posiblemente esté relacionado con Docker. Tal vez puedas actualizar tu instalación de Docker??

1 me gusta

Es una instalación estándar que ha estado funcionando muy bien hasta ahora en AlmaLinux en los últimos meses (y antes también funcionaba bien en CentOS).

¿Cómo puedo actualizar la instalación de Docker (sin la instrucción de reconstrucción habitual con el lanzador o a través del sitio web, ya que ninguno de estos métodos parece funcionar)?

Antes de continuar, haga una copia de seguridad (si puede) y descargue una copia local. (Quizás intente Mover un sitio de Discourse a otro VPS con rsync)

Intente esto, podría darle una pista:

docker --version
docker run hello-world
1 me gusta

Con un poco de ayuda de ChatGPT descubrí que el problema es la configuración de red Bridge de Docker o lo que sea que eso signifique.

He intentado varias soluciones pero hasta ahora sin éxito. Aún no he probado esta:

¿Es esto seguro para un entorno de producción? (incluso si crea un breve tiempo de inactividad)

Me temo que no lo sé. Confío en que tienes una copia de seguridad reciente y segura. Lo menos disruptivo sería reiniciar.

1 me gusta

Solo publico para actualizar sobre la situación. Se resolvió con la ayuda de ChatGPT.

Después de probar diferentes soluciones, esta parte mostró que algo andaba mal con los permisos o las políticas de seguridad:

  1. Intenta ejecutar un contenedor con la bandera --privileged

Esto omite algunas restricciones que podrían estar afectando la red.

docker run --rm --privileged alpine ping -c 4 github.com

Si esto funciona, sugiere un problema de permisos o de política de seguridad.

Después de eso, apliqué la siguiente sugerencia:

  1. Vuelve a comprobar las reglas de iptables

Dado que Docker se basa en iptables, confirmemos que tiene las reglas de reenvío correctas.

Ejecuta:

sudo iptables -t nat -L -v -n | grep -i docker

Si no aparecen reglas relacionadas con Docker, agrégalas manualmente:

sudo iptables -P FORWARD ACCEPT

sudo iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT

sudo iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

Luego reinicia Docker:

sudo systemctl restart docker

Y vuelve a probar.

… lo que lo solucionó por completo. :grin:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.