升级后,Docker 无法连接外网

重新安装并从备份恢复是唯一的解决方案。

不知道半夜出了什么变化,但现在问题已经解决了。

感谢支持。

这个问题并非新出现。听起来你通过备份、重新安装和恢复解决了它。

供你参考,我是按照这里描述的方法绕过该问题的:Could not resolve host: github.com for SamSaffron/pups.git - #9 by rcauvin

顺便一提,我也有同样的问题,但 @rcauvin 的建议对我无效。

参见:https://meta.discourse.org/t/discourse-setup-could-not-resolve-host-github-com/172299/2,这是我关于同一问题的帖子。

我遇到了同样的问题,但使用的是全新的 DigitalOcean Droplet,并遵循了本教程。Docker 是由 Discourse 安装程序自动安装的。我不知道如何解决这个问题。上述解决方案对我也不起作用。

firewall-cmd --zone=public --add-masquerade --permanent

编辑:在应用了 @rcauvin 提供的解决方案,并随后执行了来自此帖子 中的 firewall-cmd --zone=public --add-masquerade --permanent 命令后,问题已解决。

我最近在 Ubuntu 20 的 DigitalOcean 上注意到一个问题:宿主机未将域名服务器提供给 Docker。这不是防火墙的问题,因为 Ubuntu 20 默认并未启用防火墙。

要解决此问题,首先使用 cat /run/systemd/resolve/resolv.conf 查找 DigitalOcean 的域名服务器。您会看到类似以下内容:

nameserver 1.2.3.4
nameserver 9.8.7.6

接下来,使用 nano /etc/docker/daemon.json 编辑 daemon.json 文件,将上述域名服务器(以及可选的 Google DNS 8.8.8.8)配置为 Docker 可用。

{
    "dns": ["<上述的 ip1>", "<上述的 ip2>", "8.8.8.8"]
}

然后重启 Docker 并重新构建。

systemctl restart docker
/var/discourse/launcher rebuild app

我的安装中没有这个文件。你是从头创建的吗,还是你的安装中原本就有这个文件?

该位置我唯一的文件是 key.json。

我是从零开始创建这个文件的。