Обновление Docker удалило драйвер хранения AUFS и убило Discourse

Я развернул установку Discourse на Ubuntu 20.04.6 LTS. Образ Docker использует AUFS для хранения.

Сегодня я выполнил обновление через sudo apt upgrade. Теперь форум Discourse недоступен, и, похоже, это произошло из-за того, что обновление Docker удалило драйвер хранения AUFS.

Я нашел множество руководств по настройке Docker для использования Overlay2, но не вижу инструкций о том, как мигрировать существующую установку Discourse на Overlay2, особенно теперь, когда я не могу запустить Docker для монтирования томов AUFS.

При выполнении команды

sudo dockerd --debug

вывод следующий:

INFO[2024-05-15T19:49:04.327570182-04:00] Starting up
DEBU[2024-05-15T19:49:04.332295421-04:00] Listener created for HTTP on unix (/var/run/docker.sock)
WARN[2024-05-15T19:49:04.340758649-04:00] failed to rename /var/lib/docker/tmp for background deletion: rename /var/lib/docker/tmp /var/lib/docker/tmp-old: file exists. Deleting synchronously
DEBU[2024-05-15T19:49:04.427688615-04:00] Golang's threads limit set to 13680
DEBU[2024-05-15T19:49:04.430903802-04:00] metrics API listening on /var/run/docker/metrics.sock
DEBU[2024-05-15T19:49:04.554881397-04:00] Using default logging driver json-file
DEBU[2024-05-15T19:49:04.555543790-04:00] No quota support for local volumes in /var/lib/docker/volumes: Filesystem does not support, or has not enabled quotas
DEBU[2024-05-15T19:49:04.563660483-04:00] processing event stream                       module=libcontainerd namespace=plugins.moby
DEBU[2024-05-15T19:49:04.567109514-04:00] Error while looking up volume                 driver=local error="volume not found" volume=
DEBU[2024-05-15T19:49:04.567813165-04:00] Error while looking up volume                 driver=local error="volume not found" volume=
INFO[2024-05-15T19:49:04.574217050-04:00] [graphdriver] trying configured driver: aufs
DEBU[2024-05-15T19:49:04.574500003-04:00] daemon configured with a 15 seconds minimum shutdown timeout
DEBU[2024-05-15T19:49:04.574603992-04:00] start clean shutdown of all containers with a 15 seconds timeout...
DEBU[2024-05-15T19:49:04.578694693-04:00] Cleaning up old mountid : start.
DEBU[2024-05-15T19:49:04.579329989-04:00] Cleaning up old mountid : done.
failed to start daemon: error initializing graphdriver: [graphdriver] ERROR: the aufs storage-driver has been deprecated and removed; visit https://docs.docker.com/go/storage-driver/ for more information: aufs

Как мне восстановить форум Discourse без потери данных? Можно ли как-то вернуть драйвер хранения AUFS, а затем выполнить миграцию на Overlay2?

Вы не потеряете данные, они находятся в /var/discourse/shared.

Если Docker работает, просто пересоберите образ, и всё будет в порядке.

К сожалению, после обновления Docker перестал работать. Ошибка видна в последней строке предоставленного вами вывода.

Мне удаётся запустить Docker, если я изменю содержимое файла /etc/docker/daemon.json с

 {
     "storage-driver": "aufs"
 }

на

 {
     "storage-driver": "overlay2"
 }

Однако мой форум Discourse всё ещё не работает после внесения этого изменения.

Вы утверждаете, что всё заработает и сохранятся пользователи, сообщения, остальная конфигурация и исторические данные, если я выполню следующие команды и перезапустлю Docker?

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

Перенесёт ли пересборка Discourse таким образом все данные форума на хранилище Overlay2?

Я думаю, это сработает. Не представляю, как можно потерять данные.

Вы, похоже, были правы. После изменения драйвера хранилища в /etc/docker/daemon.json на overlay2 и выполнения команды ./launcher rebuild app форум снова работает.

Теперь я думаю, стоит ли искушать судьбу и обновить Ubuntu до версии 22.04.3 LTS. :slight_smile:

Я бы подождал ещё немного, создал новый образ 24.04 и перешёл на него, вместо того чтобы делать обновление, или просто перешёл на 22.04 сейчас. Я не доверяю тому, сколько вещей не обновляется при обновлении. Кроме того, вы избегаете простоя, и если что-то пойдёт не так, ваш старый сервер всё ещё будет работать.

Перенос сайта Discourse на другой VPS с помощью rsync