시놀로지 NAS를 어느 정도 쓰다 보면 한 번쯤 Container Manager(구 Docker 앱)를 건드려보고 싶어진다. 파일 공유, 사진 백업, 외부 접속 설정까지 익숙해지고 나면 “그래서 Docker는 뭘 할 수 있지?”라는 궁금증이 자연스럽게 생긴다. 나도 딱 그 시점에 처음 Container Manager를 열었는데, 솔직히 첫인상은 막막함이었다. 이미지, 컨테이너, 볼륨, 포트 매핑… 단어 하나하나는 어디서 들어본 것 같은데 실제로 무엇부터 해야 하는지 감이 안 잡혔다. 이 글은 그 막막함을 조금이나마 줄이는 데 초점을 맞췄다. 완벽한 Docker 입문 강의가 아니라, 집에서 NAS로 직접 굴려보면서 정리한 운영 기준이다.
Docker를 NAS에서 쓴다는 게 어떤 의미인가
Docker는 간단히 말하면 “작은 독립 실행 환경”을 만들어주는 도구다. 예를 들어 집에서 개인 메모 앱을 운영하고 싶다고 하자. 보통이라면 서버에 직접 프로그램을 설치하고 설정 파일을 건드려야 한다. Docker를 쓰면 그 앱이 담긴 “컨테이너”를 그냥 띄우면 된다. 설치 과정이 대부분 자동화되어 있고, 앱끼리 서로 간섭하지 않는다. 문제가 생기면 컨테이너만 내렸다가 다시 올리면 되고, 다른 서비스에는 영향이 없다.
시놀로지 NAS에서 이게 매력적인 이유는 NAS가 24시간 켜져 있는 저전력 서버이기 때문이다. 별도 PC를 켜두지 않아도 홈 서버처럼 쓸 수 있다. 실제로 내가 집에서 돌리고 있는 것들은 홈 자동화 허브(Home Assistant), 개인 메모 앱, 다운로드 관리 도구 같은 것들이다. 클라우드 구독 없이 집 안에서 데이터를 직접 관리할 수 있다는 점이 가장 큰 이유였다.
다만 NAS가 고사양 서버는 아니기 때문에 무작정 컨테이너를 쌓으면 전체 성능이 떨어진다. 이 부분은 뒤에서 따로 다룬다.
처음 Container Manager를 열면 실제로 막히는 지점
Container Manager를 처음 열면 왼쪽 메뉴에 이미지, 컨테이너, 네트워크, 볼륨 같은 항목이 보인다. 여기서 대부분의 초보자가 하는 실수가 있다. 이미지부터 당겨오고, 컨테이너를 만들고, 실행이 되면 “됐다”고 생각하는 것이다. 그런데 이 순서로 하면 나중에 문제가 생겼을 때 데이터가 어디 있는지 모르는 상황이 온다.
컨테이너는 기본적으로 “임시 공간”이다. 컨테이너를 삭제하면 그 안에서 생성된 데이터도 같이 사라진다. 그래서 중요한 데이터는 반드시 NAS의 특정 폴더와 연결(마운트)해야 한다. 이것을 볼륨 매핑 또는 경로 매핑이라고 부른다. 이 개념을 모르고 시작하면 앱이 잘 돌아가는 것처럼 보여도 컨테이너를 한 번 내리는 순간 설정이 다 날아간다.
또 하나 막히는 지점은 포트 매핑이다. 컨테이너 안의 앱은 특정 포트를 쓰는데, 외부(브라우저나 앱)에서 접근하려면 NAS의 포트와 연결해줘야 한다. 이때 이미 다른 서비스가 쓰고 있는 포트와 겹치면 컨테이너가 시작되지 않거나, 기존 서비스가 충돌한다. 처음에는 이게 왜 안 되는지 원인을 찾기가 꽤 까다롭다.
세팅 순서 체크리스트, 이 흐름으로 가면 실수가 줄어든다
직접 여러 번 시행착오를 겪고 나서 지금은 아래 순서로 정착했다. 매뉴얼이라기보다는 “이 순서가 나한테는 제일 덜 헷갈렸다” 정도로 참고하면 된다.
- 폴더 구조 먼저 만들기
Container Manager를 열기 전에 File Station에서 서비스별 폴더를 먼저 만든다. 예를 들어/docker/앱이름/config,/docker/앱이름/data같은 구조다. 폴더 이름은 영문 소문자로 통일하는 게 나중에 편하다. 이 폴더가 실제 데이터가 저장되는 곳이 된다. - 이미지 가져오기
Container Manager → 레지스트리에서 원하는 이미지를 검색해 다운로드한다. 이미지 이름 옆에 태그가 있는데, 특별한 이유가 없으면latest보다는 특정 버전 태그를 쓰는 편이 안전하다. 업데이트가 자동으로 들어오는 걸 막을 수 있어서 예상치 못한 변경을 피할 수 있다. - 컨테이너 생성 시 볼륨 매핑 확인
컨테이너를 만들 때 볼륨 탭에서 위에서 만든 폴더를 연결한다. 컨테이너 내부 경로는 각 앱의 공식 문서나 Docker Hub 페이지에 나와 있다. 이 부분을 빠뜨리면 데이터가 컨테이너 내부에만 저장된다. - 포트 매핑 설정
포트 탭에서 NAS 포트(호스트 포트)와 컨테이너 포트를 연결한다. NAS에서 이미 쓰는 포트가 있으면 겹치지 않게 다른 번호를 쓴다. 8080, 8443 같은 번호가 자주 쓰이는데, 헷갈리면 메모해두는 게 좋다. - 환경변수 설정 및 기록
일부 앱은 환경변수(예: 비밀번호, 타임존 등)를 입력해야 한다. Container Manager UI에서 입력하면 되는데, 나중에 컨테이너를 재생성할 때 이 값을 다시 입력해야 한다. UI에서만 관리하면 누락이 생기기 쉬워서 메모장이나 별도 파일에 기록해두는 것을 권장한다. - 실행 후 로그 확인
컨테이너를 시작한 뒤 로그 탭에서 에러 메시지가 없는지 확인한다. 볼륨 경로가 잘못됐거나 포트 충돌이 있으면 여기서 바로 보인다.
업데이트는 빠르게보다 안전하게
Docker 이미지는 주기적으로 업데이트된다. 보안 패치가 포함된 경우도 있어서 아예 무시할 수는 없는데, 무조건 최신 버전으로 빨리 올리는 게 정답은 아니다. 특히 DB가 포함된 서비스나 인증 관련 설정이 들어간 앱은 업데이트 후 재기동만으로 끝나지 않는 경우가 종종 있다.
내가 쓰는 방식은 이렇다. 업데이트 전에 해당 앱의 config 폴더를 통째로 백업한다. 그다음 변경 내역(릴리즈 노트)을 간단히 확인하고, 큰 버전 변경이 있으면 좀 더 기다렸다가 올린다. 마이너 업데이트는 비교적 빠르게 적용하는 편이다. 문제가 생겼을 때 바로 이전 상태로 돌아갈 수 있어야 운영이 안정적이다. 롤백 가능성이 업데이트 속도보다 중요하다는 걸 몇 번 경험하고 나서 이 기준이 생겼다.
시놀로지 DSM에서는 Hyper Backup을 이용해 docker 폴더 전체를 정기 백업하도록 설정해두면 개별 앱 백업을 일일이 신경 쓰지 않아도 된다. 백업 주기는 하루에 한 번 정도가 적당하고, 보관 버전은 최소 3~5개는 남겨두는 게 좋다.
집에서 돌릴 때 자주 겪는 문제와 판단 기준
가장 흔하게 겪는 건 리소스 과부하다. 컨테이너를 여러 개 동시에 올리면 NAS CPU와 메모리 사용률이 급격히 올라가고, 전체 반응성이 떨어진다. 파일 복사나 썸네일 생성 같은 작업과 겹치면 더 심해진다. 처음에는 컨테이너를 하나씩 추가하면서 리소스 모니터(DSM → 리소스 모니터)를 확인하는 습관을 들이는 게 좋다.
메모리가 2GB 이하인 NAS라면 Docker 운영 자체가 버거울 수 있다. 4GB 이상이면 가벼운 서비스 2~3개 정도는 무리 없이 돌아가는 편이다. 8GB 이상이면 조금 더 여유 있게 구성할 수 있다. 다만 이건 어디까지나 내 경험 기준이고, 어떤 앱을 돌리느냐에 따라 달라진다.
두 번째로 자주 겪는 문제는 외부에서 접근이 안 되는 상황이다. 컨테이너는 잘 돌아가는데 브라우저에서 열리지 않는 경우, 포트 매핑이 잘못됐거나 방화벽에서 막혀 있는 경우가 많다. 이때는 NAS 내부 IP로 먼저 접근해보고, 그게 되면 외부 접근 쪽 문제를 따로 확인한다. 외부 접속 관련해서는 NAS 외부 접속 안 될 때 가장 흔한 실수 5가지에 정리해둔 내용이 도움이 될 수 있다.
세 번째는 환경변수 누락이다. 컨테이너를 지우고 다시 만들 때 처음에 입력했던 환경변수를 빠뜨리는 경우가 생각보다 많다. 앱이 이상하게 동작하거나 로그인이 안 되는 증상으로 나타나는데, 원인을 찾는 데 시간이 걸린다. 앞서 말했듯 환경변수는 반드시 어딘가에 기록해두는 것을 권장한다.
보안 측면에서 신경 써야 할 것들
컨테이너를 외부에 노출할 때는 몇 가지를 꼭 확인해야 한다. 우선 필요한 포트만 연다. 앱이 내부에서만 쓰인다면 외부 포트를 열 이유가 없다. 포트를 열어야 한다면 기본 포트보다는 다른 번호로 바꾸는 편이 낫다. 완벽한 보안은 아니지만 자동화된 스캔을 조금이나마 피할 수 있다.
컨테이너 안에서 돌아가는 앱의 기본 계정 정보(ID/비밀번호)는 반드시 변경해야 한다. 이미지를 처음 올렸을 때 기본값이 admin/admin이나 admin/password인 경우가 많다. 이걸 그냥 두면 내부 네트워크에서 누구든 접근할 수 있다.
그리고 DSM 자체의 보안 설정도 같이 점검해두는 게 좋다. 방화벽 규칙, 2단계 인증, 자동 차단 설정 같은 것들이다. Docker 컨테이너 보안만 신경 쓰고 DSM 접근 자체가 열려 있으면 의미가 없다. 이전 글인 [NAS 구축기 08] 시놀로지 NAS 문제 해결, 자주 겪는 실전 사례 정리에서 관련 내용을 다뤘으니 참고하면 된다.
어떤 앱부터 시작하면 좋을까
처음부터 무거운 앱을 올리면 문제가 생겼을 때 원인을 찾기 어렵다. 가볍고 단순한 것부터 시작해서 Container Manager 자체에 익숙해지는 게 낫다. 내가 처음 올린 건 간단한 메모 앱이었는데, 설치가 쉽고 데이터 구조도 단순해서 볼륨 매핑 개념을 익히기에 좋았다.
어느 정도 익숙해진 뒤에 Home Assistant 같은 홈 자동화 허브를 올리면 훨씬 수월하다. Home Assistant를 NAS Docker에 올리는 과정은 [HA 구축기 04] NAS Docker 설치 후기에 따로 정리해뒀다. 홈 자동화에 관심이 있다면 같이 보면 좋다.
다운로드 관리 도구나 미디어 서버는 리소스를 꽤 쓰는 편이라, 다른 컨테이너들이 안정적으로 돌아가는 걸 확인한 뒤에 추가하는 게 좋다.
운영하면서 실제로 도움 됐던 습관들
컨테이너 이름은 앱 이름과 동일하게 짓는다. 나중에 여러 개가 쌓이면 이름만 봐도 뭔지 알 수 있어야 관리가 편하다. 이름이 container1, test2 같으면 금방 헷갈린다.
컨테이너별로 간단한 메모를 남겨두는 것도 도움이 됐다. 어떤 포트를 쓰는지, 환경변수에 뭘 넣었는지, 마지막으로 업데이트한 날짜 같은 것들이다. 별도 앱 없이 텍스트 파일 하나로 관리해도 충분하다.
로그는 주기적으로 확인하는 습관을 들이는 게 좋다. 에러가 쌓이고 있는데 앱이 겉으로는 멀쩡해 보이는 경우가 있다. Container Manager에서 컨테이너를 선택하면 로그 탭이 있고, 여기서 최근 로그를 바로 볼 수 있다. 뭔가 이상하다 싶으면 로그부터 보는 게 원인 파악에 가장 빠르다.
정리하면, 경로·포트·백업 이 세 가지가 기준이다
Container Manager 입문이 어렵게 느껴지는 건 개념이 낯설어서지, 실제로 해야 할 것이 많아서가 아니다. 볼륨 경로를 먼저 정하고, 포트 충돌을 확인하고, 백업 범위를 명확히 하는 것. 이 세 가지 기준만 잡히면 이후 서비스를 추가하거나 문제를 해결하는 게 훨씬 수월해진다.
처음에는 하나씩 올려보면서 익숙해지는 게 가장 빠른 길이다. 한꺼번에 여러 개를 올리려다 문제가 생기면 어디서 꼬인 건지 찾기가 어렵다. 천천히 쌓아가다 보면 어느 순간 Container Manager가 그렇게 무섭지 않다는 걸 느끼게 된다.
다음 글에서는 홈 IoT와 NAS를 함께 붙였을 때 로그·백업·복구 흐름이 어떻게 달라지는지 실제 운영 기준으로 이어서 정리할 예정이다. Docker 위에서 Home Assistant를 돌리면서 자동화 구성을 어떻게 잡았는지도 같이 다룰 생각이다.
같이 보면 좋은 글
- [HA 구축기 04] NAS Docker 설치 후기
- NAS 외부 접속 안 될 때 가장 흔한 실수 5가지
- [NAS 구축기 08] 시놀로지 NAS 문제 해결, 자주 겪는 실전 사례 정리
- [NAS 구축기 10] 홈 IoT와 NAS 연동, 실제 생활 자동화 구성 노하우
시리즈 글 모아보기
- 이전 편: 08. 시놀로지 NAS 문제 해결, 자주 겪는 실전 케이스
- 다음 편: 10. 홈 IoT와 NAS 연동, 실제 생활 자동화
- 전체 목차: 시놀로지 NAS 구축기 전체 목차
- 참고: Synology 지식 베이스