[Docker][Nextcloud] Updates between multiple major versions are unsupported
* Docker Desktop for Mac(Mac with Apple chip) 4.21.1 (114176) 버전을 기준으로 설명합니다.
1) 도커 이미지 버전업
처음에 스테이블 이미지 deploy 할 때가 24 버전이었는데 어느덧 27 버전이다. 다른 이미지처럼 그냥 re-pull & deploy 하면 최신버전으로 자동 업그레이드될 줄 알았는데 에러가 뿜뿜.
내가 생각했던 버전업 | 에러로 알게 된 정석 버전업 |
---|---|
24 -> 27 | 24 -> 25 -> 26 -> 27 |
다행히 도커허브에 이미지가 버전별로 명시되어 있어 순차적으로 re-pull & deploy를 거쳐 27 버전으로 올렸다.
2) Config 수정
이 글을 쓰게 된 원인이자 해결방법은 config.php 파일에 있었다.
re-pull & deploy를 한다고 해서 내부, 외부 저장소의 config.php는 변경되지 않는다.
Stacks – Editor로 환경변수 구성(값)을 편집하고 re-deploy해도 config.php는 변경되지 않는다.
웬걸, 구동되는 이미지는 27 버전인데 내부, 외부 저장소의 config.php의 구성은 24 버전이었다. 그래서 24로 명시된 버전을 27 버전으로 수정하고 웹 화면으로 접속하니 업그레이드 과정이 잘 진행이 되었다.
3) 여담
내부, 외부 저장소의 config.php 파일이 혼동되어 관리가 되었었던 원인은 익숙지 않았던 macOS 환경의 도커 파일 쉐어링 옵션 수정에서 비롯되었다. 옵션을 수정하면서 서버 세팅과 저장소 위치가 바뀌다 보니 이런 사태가… 오래된 config.php 파일은 여기 있고 새로운 config.php 파일은 저기 있는 이상한 상황이 되어버린 것이다.
서버 운영에 필요한 Mac의 내부 저장소 용량은 매우 부족하다.(좋은 리눅스 서버 두고 비싼 Mac으로 서버를 운영할만한 사람이 얼마나 많겠냐만은…) 그래서 과거에 리눅스로 서버 운영을 했던 것처럼 대용량 외부 저장소를 Mac에 연결하여 시스템을 구성했는데, 구축 당시엔 ARM 기반 M1 Mac이 막 자리 잡고 있을 때였고 도커 또한 안정화되었다고 느끼기 어려웠다.
특히, 도커에서 마운트 한 외부 저장소에 접근할 때는 속도가 처참했다. 마운트 한 외부 저장소 속도가 너무 느려서 길게는 웹 서버가 페이지 하나 띄우는데 30초까지 걸린 적이 있었다.
그래서 속도 개선을 하고자 도커 데스크톱에서 제공하는 파일 쉐어링 옵션을 수정하게 되었다.
지금은 Legacy 취급인 느려터진 osxfs, 그것보다 속도가 더 나았지만 여전히 속 터지게 느렸던 gRPC FUSE. 그리고 당시에 실험적 옵션에서 제공하는 VirtioFS가 I/O 성능이 좋다는 설명에 혹해서 그 옵션을 켰다가 피 봤다… ㅋ 속도는 괜찮았는데 파일 권한이 이상하게 잡히는 데다 수정도 안돼서 서버가 아예 안 돌아갔다.
그래도 서버는 살려야 하니까 눈물을 머금고 끔찍한 속도지만 안정적인 osxfs로 재구축하고 gRPC FUSE로 운영하다가 너무 답답한 나머지 도커가 어느 정도 버전업이 되었을 때 VirtioFS로 갈아탔다. 이때도 불안정했기에 외부 저장소에 저장되던 서버 관련 리소스를 내부 저장소로 이전했던 기억이 있다.
물론, 최신버전의 도커는 VirtioFS가 상당히 안정화되어 있어 잘 쓰고 있다.