Overlayfs 到 Overlay2,新安装失败,存储驱动

在按照官方安装指南输入主机名、smtp 端口等信息后执行 ./discourse-setup 出现错误信息。

按 ENTER 继续,‘n’ 重试,Ctrl+C 退出:
letsencrypt.ssl.template.yml 已启用

容器/app.yml 配置文件已成功更新!

更新成功。5 秒后重建。
正在构建应用
您的 Docker 安装使用的存储驱动不受支持。如果我们继续,您的安装可能会出现问题。
overlay2 是推荐的存储驱动,但 zfs 和 aufs 也可能有效。
其他存储驱动已知存在问题。
您可以通过运行 “docker info” 并查看“Storage Driver”行来了解您正在使用的文件系统。

如果您希望使用现有的不受支持的存储驱动继续操作,
请阅读 launcher 的源代码并找出如何绕过此检查。

存储驱动从 Overlayfs 到 overlay2

我尝试遵循 Discourse 的 AI 机器人建议并搜索了以前的主题,例如:

但仍然无效。

root 3085 0.0 0.0 6480 2372 pts/1 S+ 05:27 0:00 grep --color=auto 2658

无法安装 Docker

我尝试更换了我的 VPS 提供商到 DigitalOcean,以及另外两个 VPS 提供商,但仍然失败。

我以为是我的 VPS 提供商的问题,但在 DigitalOcean 上使用新的 Droplet 和官方/标准安装进行全新安装后,仍然失败。然后我换到了另外两个不同的 VPS 提供商,结果一样。:face_with_raised_eyebrow:

我以为是我的 Ubuntu 版本问题,但在尝试了 Ubuntu 版本 24、22、20 和 18 后仍然失败。

客户端: Docker Engine - Community
 版本:    29.0.2
 上下文:    default
 调试模式: false
 插件:
  buildx: Docker Buildx (Docker Inc.)
    版本:  v0.30.0
    路径:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    版本:  v2.40.3
    路径:     /usr/libexec/docker/cli-plugins/docker-compose
  model: Docker Model Runner (Docker Inc.)
    版本:  v1.0.0
    路径:     /usr/libexec/docker/cli-plugins/docker-model

服务器:
 容器: 1
  正在运行: 1
  已暂停: 0
  已停止: 0
 镜像: 3
 服务器版本: 29.0.2
 存储驱动: overlay2
  后备文件系统: extfs
  支持 d_type: true
  使用 metacopy: false
  原生 Overlay Diff: true
  userxattr: false
 日志记录驱动: json-file
 Cgroup 驱动: systemd
 Cgroup 版本: 2
 插件:
  卷: local
  网络: bridge host ipvlan macvlan null overlay
  日志: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI 规范目录:
  /etc/cdi
  /var/run/cdi
 Swarm: 非活动
 运行时: io.containerd.runc.v2 runc
 默认运行时: runc
 Init 二进制文件: docker-init
 containerd 版本: fcd43222d6b07379a4be9786bda52438f0dd16a1
 runc 版本: v1.3.3-0-gd842d771
 init 版本: de40ad0
 安全选项:
  apparmor
  seccomp
   配置文件: builtin
  cgroupns
 内核版本: 5.15.0-161-generic
 操作系统: Ubuntu 22.04.5 LTS
 OSType: linux
 架构: x86_64
 CPU: 2
 总内存: 2.407GiB
 名称: please-help-me
 ID: 398f33a7-2b49-4235-bcb9-4e1723a7bd81
 Docker 根目录: /var/lib/docker
 调试模式: false
 实验性: false
 不安全注册表:
  ::1/128
  127.0.0.0/8
 实时恢复启用: false
 防火墙后端: iptables

有人能帮忙吗?

我可以在我最近设置的至少两个网站上确认此行为。git.docker.com 存在问题,它默认未能加载 overlay2,而多年来它一直可以正常工作。

创建 /etc/docker/daemon.json 并包含以下内容:

{
  "storage-driver": "overlay2"
}

然后执行

sudo systemctl restart docker

之后应该就可以正常工作了。

1 个赞

我也是……

我的意思是,目前,官方 discourse 安装过程中出了问题。

我尝试了使用 官方安装 的 digitalocean,但出现了此错误消息。然后我换到了另一个 vps 提供商,结果一样。

我希望,任何在 2025 年 11 月为 discourse 首次安装而苦苦挣扎的人 :sweat_smile: 都能找到上面的解决方案 :index_pointing_up:

我为此挣扎了第三天 :tired_face: 终于完成了。

非常感谢 Jay 先生 :folded_hands:

嗯,这是 Docker 的错。我一直以为他们会修复它,但在我注意到他们修复之前,我所有的安装都会创建那个文件,这样我就不必担心了。

我在这里抱怨过:

1 个赞

Docker 在 v29.0+ 中使用新的默认存储驱动

Docker Engine 29.0 及更高版本在全新安装时默认使用 containerd 镜像存储。containerd 镜像存储使用快照程序(snapshotters)而不是本页所述的经典存储驱动。如果您正在运行全新安装的 Docker Engine 29.0 或更高版本,或者您已迁移到 containerd 镜像存储,则本页提供了关于镜像层工作原理的背景信息,但实现细节有所不同。有关 containerd 镜像存储的信息,请参阅 containerd 镜像存储

1 个赞

那么根据我的理解,我们只需要查找并包含 overlayfs 即可?

相关的拉取请求(PR)在这里:

1 个赞

我不知道。我没有测试过覆盖层是否能工作。在某个时候,它不能工作,这就是它成为一个要求的原因。我没有意识到它不再是一个要求了。

哦。

containerd 镜像存储似乎报告为 overlayfs,所以我们也应该允许这个字符串。

是的,根据您分享的帖子,这是差异:

<  Storage Driver: overlay2
<   Backing Filesystem: xfs

<   Supports d_type: true
<   Using metacopy: false
<   Native Overlay Diff: true
<   userxattr: false
---
>  Storage Driver: overlayfs
>   driver-type: io.containerd.snapshotter.v1

我还重新安装/更新了开发机器上的 Docker,遇到了同样的问题,可以确认这似乎解决了问题。

3 个赞

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