Discourse 更新错误:您的 Docker 安装未正常工作

几年来,我一直在 DigitalOcean 虚拟机上自托管 Discourse,并且通过管理页面和 SSH 进入使用命令行都多次成功更新过 Discourse。这是我第一次遇到问题。今天(2025 年 2 月 8 日),我通过管理页面成功更新了 Docker 容器。然后我开始更新 Discourse,但失败了。我 SSH 进去并运行了:

sudo ./launcher rebuild app

并收到了这个错误:

WARNING: Docker version 20.10.14 deprecated, recommend upgrade to 24.0.7 or newer.

x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image

This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20250129-0720: Pulling from discourse/base

toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

Unable to find image 'discourse/base:2.0.20250129-0720' locally

docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit.

See 'docker run --help'.

Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

(由于 Discourse 服务器已关闭,我无法再访问管理更新页面上的错误消息。)

有人知道为什么会发生这种情况以及我需要做什么吗?

请帮忙!

你需要升级 Docker,或者很快就需要了。

你可能也需要升级你的操作系统。

lsb_release -a 告诉你什么?

但这有点令人担忧。

也许你可以等一个小时再试一次?

你应该能够用以下命令重启旧容器:

./launcher start app
1 个赞

您好 Jay,

非常感谢您的回复!

您能推荐一个关于如何升级 Docker 的说明网页吗?

运行 lsb_release -a 的结果如下:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focal

(我一直推迟更新 Linux,因为我从未在 DigitalOcean 实例上进行过操作系统升级,但我知道我很快就必须下定决心了。)

在我发帖之前,我查看了您发送的关于 Docker 用法和限制的网站,但我完全不明白。我是否需要为 Docker 付费才能更新 Discourse?

我尝试通过运行 ./launcher start app 来重启,但收到的错误消息与运行 ./launcher rebuild app 时几乎相同。

已经过去一个多小时了,我刚刚又尝试运行 ./launcher rebuild app,但收到了相同的错误。

我非常感谢您能提供的任何进一步指导。

1 个赞

编辑:哦,但是您遇到了“请求过多”错误。我认为您可以键入

  docker login

并按照说明进行操作。看起来免费的身份验证版本可能会解决您的问题。

我建议直接获取一个新的虚拟机,并按照 使用 rsync 将 Discourse 站点迁移到另一个 VPS 进行操作。停机时间很短,如果出现问题,您可以删除新的虚拟机并重试。

但您目前一切正常,所以您只需要

sudo apt update
sudo apt upgrade
# 或者,如果您只想升级 Docker,这可能会起作用。
sudo apt install docker-ce
1 个赞

你好 Jay,

我运行了 sudo apt updatesudo apt upgrade,一切正常。然后我再次尝试运行 sudo ./launcher rebuild app,出现了错误:

WARNING: Docker version 24.0.2 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Unable to find image 'discourse/base:2.0.20250129-0720' locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit.
See 'docker run --help'.
Your Docker installation is not working correctly

请注意,这与之前的错误相同,只是现在已弃用的版本是 24.0.2,而不是 20.10.14。我尝试了 sudo apt install docker-ce,但在运行 sudo ./launcher rebuild app 时遇到了同样的错误。它似乎不想升级到 24.0.7 或更高版本。

我刚刚成功地从 Docker 网站创建了一个 Docker 登录。我可以登录 Docker 网站,但当我从命令行运行 docker login 并输入我的用户名和密码(我从钥匙串中复制粘贴以避免输入错误)时,我收到:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied

我尝试了几次,以防我粘贴密码错误,但都没有成功。是否需要创建不同的登录?

我非常感谢您能提供的任何进一步建议!

您的操作系统只能这样了。这可能足够了。

是的。它只会尝试升级 docker。在某些情况下,Docker 会使用不同的名称,所以我认为升级所有内容是一个更确定的解决方案。

那是它想要的您的Docker凭据,而不是您的操作系统凭据。当我这样做时,我会得到类似这样的内容:

正在使用基于 Web 的登录
要在命令行中使用凭据登录,请使用“docker login -u <用户名>”

您的一次性设备确认码是:WZYX-ABCD
按 Enter 键打开浏览器或在此处提交您的设备代码:https://login.docker.com/activate

您是作为 root 用户运行此命令,还是作为没有权限使用 docker 的某个用户运行?

嗨 Jay,

是的,问题是我运行了 docker login 而不是 sudo docker login,因为我不是以 root 身份运行的。但我输入的是我的 Docker 用户名和密码,而不是我的操作系统用户名和密码。我没那么糟糕!

我刚刚再次运行了 sudo ./launcher rebuild app,没有出现错误!它要求我再次运行它,所以我照做了。然后我运行了 sudo ./launcher start app,一切都已启动并运行!

非常感谢!我只需要进行一次 docker 登录(然后以 root 身份登录)。

你真是帮了大忙!再次感谢你的慷慨和耐心!希望这个话题能帮助到遇到同样问题的其他人。

2 个赞

好吧,我不能总是猜到什么东西对谁来说是有意义的。

很高兴你解决了。

感谢你的更新!这是我第一次遇到这个问题,很高兴我建议的解决方案奏效了。我想知道这是否会成为一个更普遍的问题。

2 个赞