Impossibile aggiornare / inviare email / recuperare temi... Problema con Docker?

Ciao,

Negli ultimi giorni abbiamo iniziato improvvisamente ad avere un problema con l’invio di email… poi abbiamo provato ad aggiornare/aggiornare senza successo (la pagina di aggiornamento si blocca e ogni componente - docker, discourse, plugin - si blocca su “Verifica nuova versione…”) e poi abbiamo provato ad aggiornare tutto tramite root ma la ricostruzione fallisce dando il seguente messaggio (tra le altre cose):

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

Il nostro host ha confermato che non ci sono problemi con la connettività del server, SSL, firewall o qualsiasi altra cosa.

Sospetto che sia qualcosa con docker. Ho anche controllato questo argomento: Docker sometimes fails to connect to github.com - Installation - Discourse Meta e ho provato:

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

e ho ottenuto quanto segue:

--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

Qualche idea su come affrontare questo problema?

Stai operando in un territorio speciale come la Cina continentale?

Controllerei il DNS sul tuo host e poi il DNS nel tuo docker.

controlla il DNS sul tuo host:

resolvectl status|egrep Servers
nslookup github.com

controlla il DNS nel tuo 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 Mi Piace

Ok, quindi:

DNS sull’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

DNS su 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.S.: Il nostro host opera in Canada.

Grazie… Non ho idea di come possa succedere, ma non sono un esperto di Docker.

Qual è il sistema operativo host e come hai installato Discourse? Hai usato un pacchetto fornito dalla società di hosting o è un’installazione standard? (O un’installazione di sviluppo??) Come hai installato Docker?

Ma tutto questo funzionava prima, poi ha smesso di funzionare, quindi potrebbe essere legato a Docker. Forse puoi aggiornare la tua installazione di Docker??

1 Mi Piace

Si tratta di un’installazione standard che ha funzionato molto bene finora su AlmaLinux negli ultimi mesi (e anche prima su CentOS).

Come posso aggiornare l’installazione di Docker (senza la solita istruzione di rebuild con il launcher o tramite il sito web, dato che nessuno di questi metodi sembra funzionare)?

Prima di proseguire, esegui un backup (se possibile) e scarica una copia locale. (Forse prova Sposta un sito Discourse su un altro VPS con rsync)

Prova questi comandi, potrebbero darti un indizio:

docker --version
docker run hello-world
1 Mi Piace

Con un piccolo aiuto da ChatGPT ho scoperto che il problema è la configurazione di rete Bridge di Docker o qualunque cosa ciò significhi.

Ho provato diverse soluzioni ma finora senza successo. Non ho ancora provato questa:

È sicuro per un ambiente di produzione? (anche se crea un breve downtime)

Temo di non saperlo. Confido che tu abbia un recente backup sicuro. La cosa meno disturbante da fare potrebbe essere un riavvio.

1 Mi Piace

Sto solo pubblicando per aggiornare sulla situazione. Si è risolta con l’aiuto di ChatGPT.

Dopo aver provato diverse soluzioni, questa parte ha mostrato che c’era qualcosa che non andava con i permessi o le policy di sicurezza:

  1. Prova a eseguire un container con il flag --privileged

Questo bypassa alcune restrizioni che potrebbero influire sul networking.

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

Se questo funziona, suggerisce un problema di permessi o di policy di sicurezza.

Dopo di che, ho applicato il suggerimento successivo:

  1. Controlla di nuovo le regole iptables

Poiché Docker si basa su iptables, confermiamo che abbia le regole di inoltro corrette.

Esegui:

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

Se non compaiono regole relative a Docker, aggiungile 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

Quindi riavvia Docker:

sudo systemctl restart docker

E prova di nuovo.

…che ha risolto completamente. :grin:

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