스튜디오 엘

시놀로지 나스 도커 사용법: 컨테이너 매니저로 앱 쉽게 설치하기

Authors

시놀로지(Synology) 나스에서 도커(Docker)를 사용하면 홈서버, 개인 클라우드, 미디어 서버나 웹서비스 등 다양한 셀프호스트 기반 앱들을 직접 운영할 수 있습니다.

DSM 7버전 업데이트 이후부터는 기존 도커 앱 대신 컨테이너 매니저(Container Manager)로 업데이트되어 GUI 환경에서 쉽게 도커와 도커 컴포즈(Docker Compose)를 사용할 수 있습니다.

이로 인해 시놀로지 나스에서 할 수 있는 일은 사실상 무궁무진해집니다. 본 포스트에서는 컨테이너 매니저를 설치하고 사용하는 방법에 대해 알아봅니다.

도커란? 왜 시놀로지 나스에서 필요한가

도커는 앱과 그 실행에 필요한 모든 환경을 컨테이너라는 하나의 세트로 만들어 어디서든 동일하게 실행할 수 있게 해주는 기술입니다.

예를 들어 개발자가 특정 웹서비스를 만들었는데, 이 서비스가 내가 사용하는 Ubuntu 22.04 버전에서는 잘 작동하지만 다른 서버에서 실행 시에는 라이브러리 버전이나 런타임(Node.jsPython 등)이 달라서 제대로 작동하지 않는 경우가 있을 수 있습니다.

도커는 이런 문제를 해결하기 위해 운영체제 위에서 가상 머신이 아닌 컨테이너 기반 격리 환경을 만들어 앱 실행에 필요한 모든 의존 요소들을 한꺼번에 세트로 묶습니다.

그래서 한 번 도커 이미지로 만들어진 앱은 일반적으로는 윈도우 PC든 리눅스 서버든 클라우드, 시놀로지 나스에서도 거의 동일한 방식으로 실행할 수 있게 됩니다.

특히 시놀로지 나스의 경우 패키지 센터에서 모든 기능을 가진 앱들을 전부 제공하지는 않는데, 도커를 활용하면 여러 서비스를 나스 하나로 운영할 수 있게 됩니다.

도커 컴포즈(Docker Compose)는?

도커 컴포즈는 여러 개의 도커 컨테이너를 하나의 설정 파일로 묶어서 한 번에 실행하고 관리할 수 있게 해주는 도구입니다.

보통 하나의 서비스는 하나의 도커 컨테이너만으로 구성되지 않습니다. 예를 들어서 어떤 웹서비스를 만든다면, 웹 서버, 데이터베이스, 캐시 서버 등 여러 컨테이너가 동시에 필요합니다.

이걸 전부 따로 설치하고 연결해주는 작업은 상당히 번거롭기 때문에, docker-compose.yml 이라는 파일 하나에 모든 컨테이너 설정을 정의해 두고 docker compose up 이라는 명령 한 줄로 전체 서비스를 설치 및 실행할 수 있게 해주는 것이 도커 컴포즈입니다.

docker-compose.yml 에는 단순히 어떤 컨테이너들이 필요한지만 적혀있는 것이 아니라 각 컨테이너에서 요구하는 몇가지 사전 설정이나 내 호스트 시스템의 어떤 볼륨에 데이터를 매핑할 건지 등을 함께 정의하기 때문에, 완전히 서비스를 삭제하더라도 동일한 docker-compos.yml 파일만 있다면 완전히 동일한 구성으로 다시 서비스를 시작할 수 있습니다.

시놀로지 컨테이너 매니저: GUI를 통해 간단히 도커 컴포즈를 다룰 수 있게 해주는 앱

시놀로지 컨테이너 매니저는 DSM에서 도커와 도커 컴포즈를 터미널 접속(SSH) 없이 GUI로 관리할 수 있게 해주는 공식 앱입니다.

컨테이너 매니저를 쓰면 도커 이미지 검색, 다운로드, 컨테이너 생성/실행/정지, 도커 컴포즈 기반 프로젝트 생성 및 관리 등을 웹 UI에서 클릭 몇 번으로 쉽게 할 수 있습니다.

이게 없다면 터미널로 나스에 접속해서 여러 명령어를 직접 입력해야 하는데, 엄청 쉽게 사용할 수 있게 해주는 거죠.

시놀로지 나스에 컨테이너 매니저 설치 및 사용하기

기준:
Synology DSM 7.3
패키지 매니저
패키지 매니저

시놀로지 나스에 컨테이너 매니저를 설치하려면 먼저 패키지 센터 앱을 켜 주어야 합니다. 해당 앱의 검색창에 Container Manager를 키워드로 검색합니다.

Container Manager
Container Manager

결과로 Container Manager(Docker Inc. 개발, Synology Inc. 게시)가 나올텐데, 설치를 누른 후, 설치가 완료되어 열기 버튼이 활성화되면 눌러서 열어줍니다.

컨테이너 매니저를 처음 실행하면 좌측에 여러 메뉴 탭이 보이는데요, 주요 메뉴는 다음과 같습니다.

  • 개요: 현재 실행중인 컨테이너들과 프로젝트 상태 요약
  • 프로젝트: 도커 컴포즈 기반 앱 관리
  • 컨테이너: 단일 도커 컨테이너 앱 관리
  • 이미지: 각 도커 이미지 상태 및 업데이트 관리
  • 레지스트리: 도커 허브(Docker Hub) 등 외부 이미지 저장소 검색
  • 네트워크: 각 컨테이너나 프로젝트에서 사용하는 네트워크 설정
  • 로그: 컨테이너 매니저의 동작 로그(이 앱의 GUI를 통한 활동만 기록합니다)

다른 메뉴는 사실 잘 만질 일이 없고, 프로젝트 메뉴가 아마 저희가 가장 많이 사용할 메뉴가 될 겁니다. 대부분의 셀프호스트 서비스들은 도커 컴포즈를 기반으로 배포되기 때문입니다.

프로젝트 추가하기

컨테이너 매니저에서 말하는 프로젝트는 도커 컴포즈를 기반으로 여러 컨테이너들을 하나의 앱처럼 묶어서 관리할 수 있게 해주는 시놀로지에서 사용하는 관리 단위입니다.

시놀로지가 도커 앱을 컨테이너 매니저로 업데이트한 가장 큰 이유이기도 하죠.

컨테이너 매니저 프로젝트 생성 버튼

프로젝트를 추가하려면 컨테이너 매니저의 좌측 메뉴 중 [프로젝트]에 진입하여, [생성] 버튼을 눌러주면 됩니다.

다음 단계에서는 일반 설정을 입력하게 되는데요, 다음과 같은 내용을 입력하게 됩니다.

  • 프로젝트 이름: 해당 프로젝트의 이름을 입력합니다. 알파벳 소문자나 숫자로 시작하는 이름이어야 하며, 이름은 소문자, 숫자, 하이픈(-), 밑줄(_)만으로 만들 수 있습니다.
  • 경로: 해당 프로젝트의 메인 경로입니다. 여기에 docker-compose.yml 파일이 저장되고, 충돌을 방지하기 위해 다른 프로젝트와 겹칠 수 없습니다. 단, 프로젝트에 사용되는 파일들이 모두 여기에 위치해야 하는 것은 아니며, 이건 볼륨 매핑으로 따로 지정을 하게 됩니다.
  • 원본: 도커 컴포즈 원본 구성을 어떻게 입력할 것인지입니다. 이미 만들어진 docker-compose.yml 파일을 업로드할 수도 있고, 아니면 내용을 직접 작성할 수도 있습니다. 보통은 생성하려는 서비스에서 견본 docker-compose.yml 파일을 제공합니다.

참고로 여기에서 지정한 경로에 docker-compose.yml 파일이 저장된 만큼, 향후 해당 프로젝트 관련 터미널 명령을 할 때는 이 폴더로 이동하여 여러 가지 명령을 입력하게 됩니다.

이미지 업데이트하기

각 프로젝트에 포함된 이미지는 개별적으로 관리되며, 업데이트가 가능합니다. 단, 프로젝트에서 특정 버전으로 이미지를 고정(lock)했을 경우에는 업데이트를 하더라도 해당 업데이트 버전이 별도로 설치되는 것이지, 프로젝트에서 사용중인 이미지의 버전이 업데이트되지는 않습니다.

컨테이너 매니저 대시보드에 나타나는 업데이트 가능 이미지 정보

만약 업데이트 가능한 이미지가 있다면 컨테이너 매니저의 대시보드에서도 확인이 가능합니다.

컨테이너 매니저의 업데이트 가능한 이미지

이미지 탭에서 업데이트가 가능한 이미지가 있으면 태그 열에 "업데이트 사용 가능" 이라는 메시지가 나타납니다.

컨테이너 매니저의 이미지 업데이트 팝업

해당 내용을 클릭하면 이미지 업데이트 팝업이 나타나고, 업데이트 버튼을 눌러 쉽게 업데이트할 수 있습니다.

참고로 번역이 조금 이상하게 되어있는데, 아래 참고의 내용 중 첫번째는 컨테이너와 관련된 서비스가 중지될 수 있습니다 라는 의미입니다.

프로젝트 업데이트하기

도커 컴포즈 기반 프로젝트 역시 개발자 측에서 주기적으로 업데이트를 할 수 있습니다.

GUI 상에서 정석적으로 업데이트하기 위해서는 프로젝트를 중지한 후 다시 빌드하는 것입니다만, GUI 상에서 진행할 경우 중복 컨테이너가 생기는 문제도 있고 쓰이지 않는 컨테이너를 자동으로 정리하기가 까다롭고, 또 다운타임이 은근히 길어질 수 있습니다.

운영 환경에서는 SSH로 접속하여 docker compose pull / up1 명령어를 사용하는 방식이 가장 안정적인 방법입니다. 다운타임이 조금 길어지고 중간에 오류가 발생해도 해결할 여유 시간이 있는 프로젝트라면 GUI를 통해 진행하셔도 됩니다.

컨테이너 매니저 앱에서 바로 프로젝트를 업데이트하려면 프로젝트 메뉴에서 원하는 프로젝트를 선택한 후, 상단의 [작업] - [중지]를 눌러 우선 프로젝트를 중지하고, 다시 해당 프로젝트에 대해 [작업] - [빌드]를 눌러 다시 빌드를 하면 됩니다.

도커 컴포즈 프로젝트의 업데이트는 보안 패치나 기능 개선이 포함되는 경우가 많기 때문에 정기적으로 확인해 주시면 좋습니다.

시놀로지 컨테이너 매니저로 사용 가능한 대표 앱들

실제로 시놀로지 나스에서 컨테이너 매니저를 통해 많은 분들이 설치하시는 앱은 다음과 같습니다.

  • Immich: 사진/동영상 라이브러리
  • Plex / Jellyfin: 개인 미디어 서버
  • Vaultwarden: 비트워든(Bitwarden) 기반 셀프호스트 비밀번호 관리 앱
  • Nextcloud: 개인 클라우드 구축이 가능한 앱
  • Uptime Kuma: 서버 상태 모니터링을 위한 앱

이러한 서비스들은 대부분 GitHubdocker-compose.yml 파일이 공개되어 있으며, 컨테이너 매니저의 프로젝트 기능을 통해 복사-붙여넣기 수준으로 설치할 수 있습니다.

마치며: 셀프호스트의 끝판왕, 컨테이너 매니저

시놀로지 나스는 자체적으로 제공하는 기능도 많지만, 컨테이너 매니저를 사용하기 시작하는 순간 활용도는 무한하게 늘어납니다.

구글 포토(Google Photos)를 대체하는 나만의 사진 라이브러리, 넷플릭스(Netflix) 구독료를 없애줄 수 있는 내 미디어 라이브러리 겸 영화/드라마 스트리밍 서버, 노션(Notion)을 대체하는 셀프호스트형 노트 앱 등 전세계 개발자들이 미리 만들어둔 수만 가지의 도구들을 클릭 몇 번으로 내 나스에 설치하고 사용할 수 있습니다.

처음에는 도커 컴포즈나 프로젝트 등의 용어가 낯설 수 있습니다만, 하나씩 따라하며 나만의 서버 환경을 구축해 보시기 바랍니다. 저희도 좋은 앱은 주기적으로 기술 블로그를 통해 소개할 예정입니다.

시놀로지의 패키지 센터에서 설치할 수 있는 시놀로지 본사 혹은 3자 개발 앱들 중에는 도커 컴포즈로도 굴릴 수 있는 앱들이 있습니다. 두 개의 장단이 있습니다만 이 부분은 각 앱의 특성마다 다르기 때문에 이 부분도 소개 시에 함께 얘기해 보겠습니다.

참고

  1. 1 시놀로지는 컨테이너 매니저 24.0.2-1543버전부터 기존의 docker-compose 명령어 뿐만 아니라 최신 버전에서 사용하는 docker compose 명령어도 지원하기 시작했습니다. docker compose 명령어는 도커 자체에 기본적으로 포함되어 있고, Go 기반이며 도커 20.10버전 이후부터 지금까지 공식 표준인 명령어입니다. 과거 여러 매뉴얼들이 docker-compose 로 명령어를 설명하고 있습니다만, 최신 버전에 맞도록 가능하면 docker compose 방식을 사용하는 것이 권장됩니다.