“您的 Docker 安装未使用支持的存储驱动程序。”

你好,我是第一次使用 Discourse 的用户,技术知识有限。

我已按照官方说明在 Lightsail Ubuntu 18.04.2 上安装了 Discourse。论坛已顺利运行,没有任何问题。

现在尝试安装一个插件:Install plugins on a self-hosted site

运行 ./launcher rebuild app 时出现以下错误:

“您的 Docker 安装未使用受支持的存储驱动。如果我们继续操作,可能会导致安装损坏。推荐使用 aufs 存储驱动,但 zfs/btrfs/overlay 和 overlay2 也可能可以工作。其他存储驱动已知存在问题。您可以通过运行 “docker info” 并查看 “Storage Driver” 行来确认当前使用的文件系统。如果您仍希望继续使用当前不受支持的存储驱动,请阅读 launcher 的源代码,了解如何绕过此检查。”

我已在论坛中搜索了相同的信息,但回复中并不清楚具体该如何操作。

在我的设置中运行 docker info 显示使用的是 overlay2。

我不明白为什么 Discourse 可以正常安装,但插件安装/重建却无法工作。

在安装和尝试插件安装/重建之间,我只根据通知更新了 Discourse 和 Docker 管理器,并执行了 apt-get update 和 apt-get upgrade。

能否有人说明一下 overlay2 是否可以使用?还是必须使用 aufs?具体需要遵循哪些步骤才能让插件安装正常工作?

非常感谢!
Maynard

Can you please run docker info and paste the output here?

非常感谢快速回复。这是 docker info 的输出:

Client:
 Debug Mode: false

Server:
 Containers: 1
Running: 1
Paused: 0
Stopped: 0
 Images: 2
 Server Version: 19.03.1
 Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
apparmor
seccomp
Profile: default
 Kernel Version: 4.15.0-1044-aws
 Operating System: Ubuntu 18.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.945GiB
 Name: ip-172-26-45-250
 ID: X2FT:FW3R:QQM2:BNNU:4L3L:QYEV:WMI4:IC2T:LHJV:UNSG:RYHH:OWJ7
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

哦,我想我知道发生什么了。

试试:

cd /var/discourse
git pull
./launcher rebuild app

再次感谢快速回复。

添加 git pull 后,数据探索器插件现在可以正常工作了。

真奇怪。那是什么?

嗯,说来话长。

Docker 19.x 彻底改变了 docker info 输出的结构。

我们在一个多个月前,当 19.x 还处于测试分支时,就已经修复了这个问题:https://github.com/discourse/discourse_docker/commit/98c5fec43de299bdfc55970cea3495fa4c27d6ac。由于我们的启动脚本支持自动更新,这对大多数人来说并不是问题。

不过,我们的 launcher 脚本会在自动更新前检查存储兼容性。因此,如果用户使用的是旧版启动脚本,并在更新启动脚本之前就更新了 Docker,就可能进入这种状态。

这已不是我们第一次遇到这种情况了。能否让启动器先更新,然后再提示用户重新运行?

是的,应该可以。你想试试这个改动吗?