Kann keine E-Mails aktualisieren / senden / Themes abrufen... Docker-Problem?

Hallo,

In den letzten Tagen hatten wir plötzlich ein Problem beim Versenden von E-Mails… dann haben wir versucht, ein Upgrade/Update ohne Erfolg durchzuführen (die Update-Seite hängt und jede Komponente – Docker, Discourse, Plugins – bleibt bei „Checking for new version…“ hängen) und dann haben wir versucht, alles über Root zu aktualisieren, aber der Rebuild schlägt mit der folgenden Meldung fehl (unter anderem):

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

Unser Hoster hat bestätigt, dass es keine Probleme mit der Serverkonnektivität, SSL, Firewall oder irgendetwas anderem gibt.

Ich vermute, es hat etwas mit Docker zu tun. Ich habe sogar dieses Thema überprüft: Docker sometimes fails to connect to github.com - Installation - Discourse Meta und versucht:

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

und erhielt Folgendes:

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

Irgendwelche Ideen, wie dieses Problem behoben werden kann?

Operieren Sie in einem Sondergebiet wie dem chinesischen Festland?

Ich würde DNS auf Ihrem Host überprüfen und dann DNS in Ihrem Docker überprüfen.

DNS auf Ihrem Host überprüfen:

resolvectl status|egrep Servers
nslookup github.com

DNS in Ihrem Docker überprüfen

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 „Gefällt mir“

Ok, also:

auf Host-DNS:

#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

Auf Docker-DNS:

#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/
Auflösen von github.com (github.com)... Fehler bei der Namensauflösung: Temporärer Fehler.
wget: Hostadresse ‘github.com’ konnte nicht aufgelöst werden
      0       0       0

P.S.: Unser Host operiert in Kanada.

Danke… Ich habe keine Ahnung, wie das passieren könnte, aber ich bin kein Docker-Experte.

Was ist dein Host-Betriebssystem und wie hast du Discourse installiert? Hast du ein Paket verwendet, das vom Hosting-Unternehmen bereitgestellt wurde, oder handelt es sich um eine Standardinstallation? (Oder eine Entwicklerinstallation??) Wie hast du Docker installiert?

Aber bisher hat alles funktioniert, und dann hat es aufgehört, zu funktionieren, also liegt es vielleicht am Docker. Vielleicht kannst du deine Docker-Installation aktualisieren??

1 „Gefällt mir“

Es handelt sich um eine Standardinstallation, die in den letzten Monaten unter AlmaLinux sehr gut funktioniert hat (und davor auch unter CentOS).

Wie kann ich die Docker-Installation aktualisieren (ohne die übliche Neuaufbauanleitung mit dem Launcher oder über die Website, da keine dieser Methoden zu funktionieren scheint)?

Bevor Sie fortfahren, erstellen Sie bitte eine Sicherungskopie (wenn möglich) und laden Sie eine lokale Kopie herunter. (Versuchen Sie vielleicht Eine Discourse-Site mit rsync auf einen anderen VPS verschieben)

Versuchen Sie Folgendes, sie könnten einen Hinweis geben:

docker --version
docker run hello-world
1 „Gefällt mir“

Mit ein wenig Hilfe von ChatGPT habe ich herausgefunden, dass die Bridge-Netzwerkkonfiguration von Docker oder was auch immer das bedeutet, das Problem ist.

Ich habe mehrere Lösungen ausprobiert, aber bisher ohne Erfolg. Diese hier habe ich noch nicht versucht:

Ist das für eine Produktionsumgebung sicher? (auch wenn es zu kurzen Ausfallzeiten führt)

Ich fürchte, ich weiß es nicht. Ich vertraue darauf, dass du eine sichere aktuelle Sicherung hast. Das Weniger störende Vorgehen könnte ein Neustart sein.

1 „Gefällt mir“

Ich poste nur, um über die Situation zu informieren. Sie wurde mit Hilfe von ChatGPT gelöst.

Nachdem verschiedene Lösungen ausprobiert wurden, zeigte dieser Teil, dass etwas mit den Berechtigungen oder Sicherheitsrichtlinien nicht stimmte:

  1. Versuchen Sie, einen Container mit dem Flag --privileged auszuführen

Dies umgeht einige Einschränkungen, die das Netzwerk beeinträchtigen könnten.

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

Wenn dies funktioniert, deutet es auf ein Problem mit Berechtigungen oder Sicherheitsrichtlinien hin.

Danach wurde der nächste Vorschlag angewendet:

  1. Überprüfen Sie die iptables-Regeln erneut

Da Docker auf iptables angewiesen ist, überprüfen wir, ob die richtigen Weiterleitungsregeln vorhanden sind.

Führen Sie aus:

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

Wenn keine Docker-bezogenen Regeln angezeigt werden, fügen Sie sie manuell hinzu:

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

Starten Sie dann Docker neu:

sudo systemctl restart docker

Und testen Sie erneut.

… was es dann komplett behoben hat. :grin:

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