Docker 업그레이드로 AUFS 스토리지 드라이버가 제거되어 Discourse가 종료되었습니다

저는 Ubuntu 20.04.6 LTS에서 Discourse 포럼을 운영하고 있습니다. 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가 작동하지 않게 되었습니다. 제가 제공한 출력 결과의 마지막 줄에서 오류를 확인할 수 있습니다.

/etc/docker/daemon.json의 내용을 다음과 같이

 {
     "storage-driver": "aufs"
 }

다음으로 변경하면 Docker를 시작할 수 있습니다.

 {
     "storage-driver": "overlay2"
 }

그러나 이 변경을 적용한 후에도 제 Discourse 포럼은 여전히 작동하지 않습니다.

다음 명령을 실행하고 Docker를 재시작하면 정상적으로 작동하며, 사용자, 게시물 및 나머지 구성과 과거 데이터가 유지된다는 말씀이신가요?

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

이 방식으로 Discourse를 다시 빌드하면 모든 포럼 데이터가 Overlay2 저장소로 마이그레이션되나요?

그렇게 하면 작동할 거라고 기대합니다. 데이터가 손실될 수 있는 방법은 상상도 되지 않습니다.

결국 당신이 맞았네요. /etc/docker/daemon.json에서 스토리지 드라이버를 overlay2로 변경하고 ./launcher rebuild app을 실행한 후, 포럼이 정상적으로 다시 작동하는 것 같습니다.

이제 22.04.3 LTS로 Ubuntu 릴리스 업그레이드를 시도해 볼까 고민이 됩니다. :slight_smile:

조금 더 기다린 후 24.04 이미지를 새로 만들어 그쪽으로 이전하는 것이 업그레이드를 하는 것보다 낫다고 생각합니다. 아니면 지금 당장 22.04로 이동하는 것도 좋습니다. 업그레이드 과정에서 업그레이드되지 않는 부분이 얼마나 되는지 신뢰하기 어렵기 때문입니다. 게다가 이렇게 하면 다운타임을 피할 수 있고, 문제가 발생하더라도 기존 서버는 계속 작동하고 있을 것입니다.

rsync를 사용하여 Discourse 사이트를 다른 VPS로 이동하기