Ваша установка Docker не использует поддерживаемый драйвер хранения.

Привет! Я новичок в Discourse и не очень разбираюсь в технологиях.

Я установил Discourse на Lightsail с Ubuntu 18.04.2, следуя официальным инструкциям. Форум работает без проблем.

Теперь я попытался установить плагин: 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? Какие именно инструкции мне нужно выполнить, чтобы установка плагина заработала?

Заранее спасибо,
Майнард

Пожалуйста, выполните команду docker info и вставьте вывод здесь.

Большое спасибо за быстрый ответ. Вот вывод команды docker info:

Клиент:
 Режим отладки: false

Сервер:
 Контейнеры: 1
Запущено: 1
Приостановлено: 0
Остановлено: 0
 Образы: 2
 Версия сервера: 19.03.1
 Драйвер хранилища: overlay2
Базовая файловая система: extfs
Поддержка d_type: true
Нативный Overlay Diff: true
 Драйвер ведения журналов: json-file
 Драйвер cgroup: cgroupfs
 Плагины:
Том: local
Сеть: bridge host ipvlan macvlan null overlay
Журнал: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: неактивен
 Среда выполнения: runc
 Среда выполнения по умолчанию: runc
 Двоичный файл инициализации: docker-init
 Версия containerd: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 Версия runc: 425e105d5a03fabd737a126ad93d62a9eeede87f
 Версия инициализации: fec3683
 Параметры безопасности:
apparmor
seccomp
Профиль: default
 Версия ядра: 4.15.0-1044-aws
 Операционная система: Ubuntu 18.04.2 LTS
 Тип ОС: linux
 Архитектура: x86_64
 Процессоры: 1
 Общий объем памяти: 1.945 ГиБ
 Имя: ip-172-26-45-250
 ID: X2FT:FW3R:QQM2:BNNU:4L3L:QYEV:WMI4:IC2T:LHJV:UNSG:RYHH:OWJ7
 Корневая директория Docker: /var/lib/docker
 Режим отладки: false
 Реестр: https://index.docker.io/v1/
 Метки:
 Экспериментальные функции: false
 Ненадежные реестры:
127.0.0.0/8
 Live Restore включен: false

ПРЕДУПРЕЖДЕНИЕ: Поддержка ограничения swap отсутствует

О, я думаю, я понимаю, что происходит.

Попробуйте:

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

Ещё раз большое спасибо за быстрый ответ.

Команда git pull помогла, и плагин Data Explorer теперь работает.

Странно. Что это было?

Что ж, это долгая история.

В Docker 19.x полностью изменилась структура вывода команды docker info.

Мы исправили это ещё более месяца назад, когда версия 19.x находилась на бета-стадии, в коммите: FIX: Make storage detection compatible with docker 19.x · discourse/discourse_docker@98c5fec · GitHub. Тот факт, что наш скрипт запуска (launcher) автоматически обновляется, делает эту проблему несущественной для большинства пользователей.

Однако наш скрипт launcher проверяет совместимость хранилища перед автоматическим обновлением. Поэтому пользователи, у которых установлена старая версия скрипта запуска и которые обновляют Docker до обновления скрипта, могут столкнуться с этой проблемой.

Это не первый раз, когда мы сталкиваемся с этим. Не мог бы лаунчер сначала обновиться, а затем попросить пользователя запустить его заново?

Да, должно сработать. Хотите попробовать внести это изменение?