Overlayfs에서 Overlay2로 전환 실패, 신규 설치, 스토리지 드라이버

공식 설치 절차에 따라 ./discourse-setup를 실행하고 호스트명, SMTP 포트 등을 입력한 후 오류 메시지가 표시됩니다.

ENTER를 눌러 계속, 'n’을 눌러 다시 시도, Ctrl+C를 눌러 종료:
letsencrypt.ssl.template.yml 활성화됨

containers/app.yml 구성 파일이 성공적으로 업데이트되었습니다!

업데이트가 성공적으로 완료되었습니다. 5초 후 재빌드합니다.
앱 빌드 중
Docker 설치에 지원되지 않는 스토리지 드라이버가 사용되고 있습니다. 계속 진행하면 설치가 손상될 수 있습니다.
overlay2가 권장되는 스토리지 드라이버이지만, zfs와 aufs도 작동할 수 있습니다.
다른 스토리지 드라이버는 문제가 있는 것으로 알려져 있습니다.
"docker info"를 실행하여 ‘Storage Driver’ 줄을 확인하면 현재 사용 중인 파일 시스템을 알 수 있습니다.

지원되지 않는 기존 스토리지 드라이버를 그대로 사용하려는 경우,
launcher의 소스 코드를 읽고 이 확인을 우회하는 방법을 알아내야 합니다.

Storage Driver 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 제공사 문제라고 생각했지만, Digital Ocean에서 새로운 드롭렛으로 공식/표준 설치를 새로 진행해 보았음에도 여전히 실패했습니다. 이후 다른 두 VPS 제공사로 변경해 보았지만 결과는 동일했습니다. :face_with_raised_eyebrow:

Ubuntu 버전 문제라고 생각하여 Ubuntu 24, 22, 20, 18 버전을 시도해 보았지만 여전히 실패했습니다.

Client: Docker Engine - Community
 Version:    29.0.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.30.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.40.3
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
  model: Docker Model Runner (Docker Inc.)
    Version:  v1.0.0
    Path:     /usr/libexec/docker/cli-plugins/docker-model

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 29.0.2
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: fcd43222d6b07379a4be9786bda52438f0dd16a1
 runc version: v1.3.3-0-gd842d771
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.0-161-generic
 Operating System: Ubuntu 22.04.5 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 2.407GiB
 Name: please-help-me
 ID: 398f33a7-2b49-4235-bcb9-4e1723a7bd81
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false
 Firewall Backend: iptables

도와주실 분 계신가요?

최근에 설정한 두 사이트에서 이 동작을 확인할 수 있습니다. git.docker.com에 문제가 있어 수년 동안 그랬던 것처럼 기본적으로 overlay2를 로드하지 못하고 있습니다.

다음 내용으로 /etc/docker/daemon.json 파일을 생성하세요:

{
  "storage-driver": "overlay2"
}

그런 다음

sudo systemctl restart docker

을 실행합니다.

이후에는 정상적으로 작동해야 합니다. 다음 명령을 실행하여 설치된 드라이버를 확인할 수 있습니다.

docker info --format '{{.Driver}}'

저도 마찬가지입니다…

즉, 현재 공식 discourse 설치 과정에서 문제가 있다는 뜻입니다.

digitalocean에서 공식 설치 절차를 시도해 보았지만 이 오류 메시지가 나타났습니다. 그러자 다른 VPS 제공업체로 옮겼는데, 결과는 똑같았습니다.

2025년 11월 지금, discourse의 신규 설치로 고생하고 계신 분들에게 :sweat_smile: 위 솔루션을 찾으시길 바랍니다 :index_pointing_up:

이것이 제가 고생한 세 번째 날입니다 :tired_face: 이제 끝났습니다.

Jay 씨, 정말 감사합니다 :folded_hands:

글쎄, 이건 도커(Docker)의 탓이지. 그들은 이를 수정할 거라고 계속 생각하지만, 내가 그걸 확인하기 전까지는 내 모든 설치에서 해당 파일이 생성되니까 걱정할 필요가 없어.

여기서 이에 대해 불만을 제기했어:

Docker는 v29.0+에서 새로운 기본 스토리지 드라이버를 사용합니다

Docker Engine 29.0 이상은 신규 설치 시 기본적으로 containerd 이미지 스토어를 사용합니다. containerd 이미지 스토어는 이 페이지에 설명된 클래식 스토리지 드라이버 대신 스냅슈터(snapshotters)를 사용합니다. Docker Engine 29.0 이상을 새로 설치했거나 containerd 이미지 스토어로 마이그레이션을 완료한 경우, 이 페이지는 이미지 레이어가 작동하는 방식에 대한 배경 정보를 제공하지만 구현 세부 사항은 다릅니다. containerd 이미지 스토어에 대한 정보는 containerd 이미지 스토어를 참고하십시오.

그러면 제가 이해한 바로는, overlayfs도 함께 찾아서 포함해야 한다는 거죠?

관련 PR은 여기 있습니다:

모르겠어요. 오버레이가 작동하는지 테스트해 보지 않았거든요. 어떤 시점에는 작동하지 않았고, 그래서 요구 사항으로 설정한 겁니다. 더 이상 요구 사항이 아니라는 사실은 생각하지 못했네요.

아.

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

개발용 머신에서 도커를 재설치/업데이트했는데 같은 문제가 발생하여, 이 방법이 실제로 문제를 해결하는 것임을 확인했습니다.