Impossible de mettre à jour / envoyer des e-mails / récupérer des thèmes... problème Docker ?

Salut,

Ces derniers jours, nous avons soudainement commencé à avoir un problème d’envoi d’e-mails… puis nous avons essayé de mettre à niveau/mettre à jour sans succès (la page de mise à jour se bloque et tous les composants - docker, discourse, plugins - restent bloqués sur « Vérification de la nouvelle version… ») et ensuite nous avons essayé de tout mettre à jour via root, mais la reconstruction échoue en donnant le message suivant (entre autres choses) :

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

Notre hébergeur a confirmé qu’il n’y a aucun problème de connectivité serveur, SSL, pare-feu ou quoi que ce soit d’autre.

Je suspecte que le problème vient de docker. J’ai même consulté ce sujet : Docker sometimes fails to connect to github.com - Installation - Discourse Meta et j’ai essayé :

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

et j’ai obtenu ceci :

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

Des idées sur la façon de résoudre ce problème ?

Opérez-vous dans un territoire spécial tel que la Chine continentale ?

Je vérifierais le DNS sur votre hôte, puis le DNS dans votre docker.

Vérifier le DNS sur votre hôte :

resolvectl status|egrep Servers
nslookup github.com

Vérifier le DNS dans votre 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 « J'aime »

Ok, alors :

Sur le DNS de l’hôte :

#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

Sur le 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.S : Notre hôte opère au Canada.

Merci… Je n’ai aucune idée de comment cela pourrait arriver, mais je ne suis pas un expert en Docker.

Quel est votre système d’exploitation hôte, et comment avez-vous installé Discourse ? Avez-vous utilisé un paquet fourni par la société d’hébergement, ou s’agit-il d’une installation standard ? (Ou une installation de développement ??) Comment avez-vous installé Docker ?

Mais tout cela fonctionnait auparavant, puis c’est arrêté de fonctionner, donc cela pourrait être lié à Docker. Peut-être pouvez-vous mettre à jour votre installation Docker ??

1 « J'aime »

Il s’agit d’une installation standard qui a très bien fonctionné jusqu’à présent sur AlmaLinux ces derniers mois (et avant cela aussi sur CentOS).

Comment puis-je mettre à jour l’installation de Docker (sans l’instruction habituelle de reconstruction avec le lanceur ou via le site Web, car aucune de ces méthodes ne semble fonctionner) ?

Avant d’aller plus loin, veuillez effectuer une sauvegarde (si possible) et télécharger une copie locale. (Essayez peut-être Déplacer un site Discourse vers un autre VPS avec rsync)

Essayez ceci, cela pourrait vous donner un indice :

docker --version
docker run hello-world
1 « J'aime »

Avec un peu d’aide de ChatGPT, j’ai découvert que le problème vient de la configuration du réseau Bridge de Docker, ou quoi que cela signifie.

J’ai essayé plusieurs solutions, mais sans succès jusqu’à présent. Je n’ai pas encore essayé celle-ci :

Est-ce sûr pour un environnement de production ? (même si cela crée un court temps d’arrêt)

Je crains que je ne sache pas. Je vous fais confiance pour avoir une sauvegarde récente sécurisée. La chose la moins perturbatrice serait peut-être de redémarrer.

1 « J'aime »

Je poste juste pour faire le point sur la situation. Le problème a été résolu avec l’aide de ChatGPT.

Après avoir essayé différentes solutions, cette partie a montré qu’il y avait un problème avec les permissions ou les politiques de sécurité :

  1. Essayez d’exécuter un conteneur avec l’indicateur --privileged

Cela contourne certaines restrictions qui pourraient affecter le réseau.

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

Si cela fonctionne, cela suggère un problème de permissions ou de politique de sécurité.

Après cela, j’ai appliqué la suggestion suivante :

  1. Vérifiez à nouveau les règles iptables

Comme Docker s’appuie sur iptables, confirmons qu’il dispose des bonnes règles de transfert.

Exécutez :

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

Si aucune règle liée à Docker n’apparaît, ajoutez-les manuellement :

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

Ensuite, redémarrez Docker :

sudo systemctl restart docker

Et testez à nouveau.

… ce qui a totalement résolu le problème. :grin:

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