您的 Docker 安装无法正常工作 - 设备无剩余空间 - 安全使用 ./launcher cleanup 吗?

我遇到了 ./launcher rebuild app. 之后 Your Docker installation is not working correctly 的问题。

错误是 docker: failed to register layer: Error processing tar file(exit status 1): write /usr/lib/x86_64-linux-gnu/libx265.a: no space left on device.

…我看到一个修复此问题的常见技巧是 ./launcher cleanup,但在我执行之前,我想确认一下是否可以安全使用,因为我看到了:
WARNING! This will remove all stopped containers.
WARNING! This will remove all images without at least one container associated to them.

有帮助吗?我只是想确保我没有删除任何重要的东西。

docker ps -a

docker images

这是推荐的选项:

不过,如果您想在按下按钮之前确保您的网站正常运行,可以先运行 ./launcher start app

3 个赞

运行 ./launcher start app 会出现同样的错误:

docker: failed to register layer: Error processing tar file(exit status 1): write /usr/lib/x86_64-linux-gnu/libx265.a: no space left on device.
See 'docker run --help'.
Your Docker installation is not working correctly

……所以我仍然不知道这个问题的答案:在网站未运行时使用 ./launcher cleanup 是否安全?

从帖子顶部的截图“docker images”来看,似乎有很多旧镜像,但我不知道如何专门针对它们进行删除,以及这是否会引起任何麻烦。

df

如果 docker 容器正在运行,它不会删除该容器。如果容器未运行,它将删除该容器,但您可以使用 ./launcher rebuild app 重新构建一个新的容器。

2 个赞

谢谢,但对我来说仍然不太清楚——Docker 不是我的强项,所以我不知道删除和重建容器是否会弄乱我网站上的任何东西……先通过清除一些选定的空间来启动应用程序是否更安全?例如:

  1. 首先通过定位特定镜像来清除一些空间
  2. 然后运行 ./launcher start app
  3. 应用程序启动并运行后:./launcher cleanup

……不确定是否需要这种谨慎。也许直接运行 ./launcher cleanup 就行,并且即使我的应用程序没有运行也不会删除任何重要内容。

但万一你认为上述方法可行:你知道定位特定镜像进行删除的命令吗(上面第 1 步)?请看下面我删除镜像的选项。

我会先删除一两个备份?这样应该就能腾出足够的空间让程序正常运行。

如果你运行 ./launcher start app,那么 ./launcher cleanup 就不会删除正在工作的镜像,并且在清理进行时你的网站会继续运行。

如果有人不小心删除了正在工作的镜像,并且你最近进行了升级,那么很有可能你只需要运行 ./launcher rebuild app 就可以恢复正常。

1 个赞

您知道只删除一两个备份的命令吗? 比如 ./ launcher cleanup [image ID]

我不认为 ./launcher cleanup 会删除任何备份,只删除未使用的容器。

cd /var/discourse/shared/standalone/backups/default
ls 
rm file-to-delete
1 个赞

尝试了

cd /var/discourse/shared/standalone/backups/default
ls 
rm oldest-file

然后尝试了 ./launcher rebuild app
…像之前一样因内存问题失败了
然后尝试了 ./launcher cleanup
清理了 4GB
然后尝试了 ./launcher rebuild app
又失败了,出现了新的错误。
然后尝试了 ./discourse-doctor,试图找出问题所在。
…似乎解决了?
但不知道为什么。希望下次能明白。

如果在重建时遇到内存错误,我会再增加 1GB 的交换空间,但这会使你的磁盘空间问题更加紧张(听起来你使用的是一个只有 25GB 内存的小型 droplet,这仅仅够用)。我会在每次重建前运行 ./launcher cleanup,或者你可能有很多备份,应该将它们移至 S3([为上传配置 S3 兼容对象存储提供商](Configure an S3 compatible object storage provider for uploads --你可以只备份,不必像那里描述的那样处理所有资产)。

第二个错误不是内存错误,但我无法确定新错误是什么:因此,我咨询了医生。
不过,./discourse-doctor 解决了这个问题,我只是希望能知道到底发生了什么。
感谢您的帮助!

1 个赞

我的猜测是您将 RAM(内存)与磁盘空间混淆了。内存错误时有时无,而“错误 127”这个错误信息含糊不清,很容易被忽略。