您好,
最近几天我们突然开始遇到发送电子邮件的问题……然后我们尝试升级/更新但没有成功(更新页面卡住,并且所有组件——docker、discourse、插件——都卡在“正在检查新版本……”),然后我们尝试通过 root 更新所有内容,但重建失败并出现以下消息(除其他外):
fatal: unable to access 'https://github.com/discourse/discourse.git/': Could not resolve host: github.com`
我们的主机已确认服务器连接性、SSL、防火墙或其他任何方面都没有问题。
我怀疑是 docker 的问题。甚至查看了此主题:Docker 有时无法连接到 github.com - Installation - Discourse Meta 并尝试了:
# cd /var/discourse/
# ./launcher enter app
# wget -O - -v https://github.com/discourse/logster.git/ |wc
并得到了以下结果:
--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
有什么办法可以解决这个问题吗?
Ed_S
(Ed S)
2025 年2 月 28 日 11:12
2
您是否在特殊地区(例如中国大陆)运营?
我会检查您主机上的 DNS,然后检查您 Docker 中的 DNS。
检查您主机上的 DNS:
resolvectl status|egrep Servers
nslookup github.com
检查您 Docker 中的 DNS:
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 个赞
好的,所以:
在主机 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
在 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/
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
0 0 0
附注:我们的主机在加拿大运行。
Ed_S
(Ed S)
2025 年2 月 28 日 12:44
4
谢谢……我不知道这可能怎么发生,但我不是 Docker 专家。
你的主机操作系统是什么,你是如何安装 Discourse 的?你是用托管公司提供的包,还是标准安装的?(或者是开发版安装?)你是怎么安装 Docker 的?
但这一切曾经可以正常工作,然后突然不行了,所以可能和 Docker 有关。也许你可以更新你的 Docker 安装?
1 个赞
这是一个标准的安装,在过去的几个月里,它在 AlmaLinux 上一直运行得非常好(在此之前在 CentOS 上也运行得很好)。
如何更新 Docker 安装(不使用启动器进行常规重建说明或通过网站进行更新,因为这些方法似乎都无法正常工作)?
Ed_S
(Ed S)
2025 年2 月 28 日 13:26
6
在继续操作之前,请先进行备份(如果可能)并下载本地副本。(也许可以尝试将 Discourse 站点迁移到另一台带有 rsync 的 VPS )
请尝试运行这些命令,它们可能会提供一些线索:
docker --version
docker run hello-world
1 个赞
在 ChatGPT 的一些帮助下,我发现问题出在 Docker 的 Bridge 网络配置上,或者无论那是什么意思。
我已经尝试了几种修复方法,但到目前为止都没有成功。我还没有尝试这个:
这在生产环境中安全吗?(即使它会导致短暂的停机时间)
Ed_S
(Ed S)
2025 年2 月 28 日 21:06
8
我恐怕不知道。我相信你有最近的安全备份。最不干扰的操作可能是重启。
1 个赞
我只是发帖更新一下情况。在 ChatGPT 的帮助下,问题解决了。
尝试了不同的解决方案后,这部分表明权限或安全策略有问题:
尝试使用 --privileged 标志运行容器
这会绕过一些可能影响网络的限制。
docker run --rm --privileged alpine ping -c 4 github.com
如果这能正常工作,则表明存在权限或安全策略问题。
之后,应用了下一个建议:
再次检查 iptables 规则
由于 Docker 依赖于 iptables,让我们确认它具有正确的转发规则。
运行:
sudo iptables -t nat -L -v -n | grep -i docker
如果没有出现与 Docker 相关的规则,请手动添加它们:
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
然后重启 Docker:
sudo systemctl restart docker
然后再次测试。
……这完全解决了问题。
system
(system)
关闭
2025 年4 月 1 日 21:52
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.