목차
안녕하세요, 13년차의 서버실 주인장입니다. 오늘은 많은 분들이 홈랩(Homelab)에서 필수적으로 활용하고 계시는 Synology NAS의 Docker 활용법에 대해 이야기해보려고 해요.
솔직히 처음엔 저도 NAS에 Docker를 왜 써야 하나 싶었습니다. 그냥 패키지 센터에서 앱 깔면 되지 않나? 하는 생각이었죠. 그런데 막상 제가 직접 몇 가지 서비스를 올려보고 관리해보니, Docker(도커)만큼 편하고 강력한 도구가 없더라고요. 특히 Synology NAS는 훌륭한 하드웨어와 DSM(DiskStation Manager)이라는 직관적인 운영체제를 제공해서, 여기에 Docker를 얹으면 그 시너지가 정말 대단합니다. 제가 홈랩에서 이것저것 실험하면서 겪었던 삽질 경험과 해결 과정을 솔직하게 공유해볼게요. 이 글을 통해 여러분도 Synology NAS의 잠재력을 100% 끌어내셨으면 좋겠어요! 🎉
Synology NAS가 홈 네트워크의 여러 Docker 서비스를 구동하는 모습을 시각화한 다이어그램입니다.
Docker, 컨테이너가 뭐길래 그렇게 좋다고 할까요?
본격적인 실전 가이드에 앞서, Docker(도커)와 컨테이너(Container) 개념을 잠깐 짚고 넘어가야겠죠? 쉽게 말해, Docker는 애플리케이션을 실행하는 데 필요한 모든 것(코드, 런타임, 시스템 도구, 라이브러리 등)을 컨테이너(Container)라는 독립적인 패키지로 묶어주는 기술입니다. 이 컨테이너는 어떤 환경에서든 동일하게 작동하도록 보장해주죠.
기존에는 하나의 서버에 여러 앱을 설치하면, 서로 다른 앱 버전이나 라이브러리 충돌 때문에 골치 아픈 경우가 많았어요. 윈도우에서 프로그램 깔다가 "어? 이 버전은 안 맞는데?" 하는 경험 다들 있으실 겁니다. 😅 가상 머신(VM)도 좋은 대안이지만, OS를 통째로 가상화하다 보니 무겁고 자원 소모가 컸거든요.
근데 Docker 컨테이너는 호스트 OS의 커널을 공유하면서도, 각각의 앱이 마치 독립적인 OS에서 실행되는 것처럼 격리된 환경을 제공합니다. 💡 그래서 가상 머신보다 훨씬 가볍고(Lightweight) 빠르며(Fast), 효율적(Efficient)이더라고요. Synology NAS 같은 한정된 자원의 장비에서 여러 서비스를 안정적으로 운영하고 싶다면, Docker는 거의 필수라고 할 수 있습니다.
Synology NAS에 Docker 설치하기: 시작이 반이죠!
Synology NAS에 Docker를 설치하는 건 정말 간단합니다. DSM(DiskStation Manager)의 패키지 센터(Package Center)를 이용하면 되거든요. 제가 처음 Synology NAS를 접했을 때, 이 패키지 센터의 편리함에 정말 놀랐던 기억이 나네요.
- DSM에 관리자 계정으로 로그인합니다.
- 패키지 센터를 엽니다.
- 검색창에 "Docker"를 입력하거나, "유틸리티" 카테고리에서 Docker 패키지를 찾습니다.
- 설치 버튼을 클릭합니다.
- 설치 과정이 완료되면, 메인 메뉴에 Docker(컨테이너 관리자) 아이콘이 생성된 것을 확인할 수 있습니다.
참 쉽죠? 이렇게 설치를 마치면, 이제 웹 UI를 통해 Docker 컨테이너를 관리할 준비가 된 겁니다. Synology는 이 Docker 관리 UI를 컨테이너 관리자(Container Manager)라고 부르더라고요. 처음엔 좀 헷갈렸는데, 그냥 Docker GUI라고 생각하시면 편해요.
Synology DSM의 컨테이너 관리자 화면입니다. 실행 중인 컨테이너들의 상태를 한눈에 볼 수 있습니다.
실전! Docker 컨테이너 배포 및 관리 노하우
이제 본격적으로 Docker 컨테이너를 배포하고 관리하는 방법을 알아볼까요? 저는 주로 두 가지 방법으로 컨테이너를 관리하는데요, 하나는 Synology의 컨테이너 관리자(Container Manager) UI를 이용하는 것이고, 다른 하나는 Docker Compose(도커 컴포즈)를 활용하는 방법입니다. 제가 직접 써보니, 간단한 앱은 UI로, 여러 앱을 묶어서 관리할 때는 Compose가 훨씬 편하더라고요.
1. 컨테이너 관리자 UI로 Synology Docker 앱 설치하기 (Nginx 예시)
Synology의 컨테이너 관리자는 마치 앱스토어처럼 이미지를 검색하고 컨테이너를 생성할 수 있게 해줍니다. Nginx(엔진엑스) 웹 서버를 예시로 들어볼게요.
- 컨테이너 관리자를 실행합니다.
- 왼쪽 메뉴에서 레지스트리(Registry)를 클릭합니다.
- 검색창에 "nginx"를 입력하고 검색합니다. 공식 Nginx 이미지를 선택하고 다운로드(Download) 버튼을 클릭합니다. 태그(Tag)는
latest를 선택하면 돼요. - 이미지 다운로드가 완료되면, 왼쪽 메뉴의 이미지(Image) 탭으로 이동합니다. 방금 다운로드한
nginx:latest이미지를 선택하고 실행(Run) 버튼을 클릭합니다. - 컨테이너 생성 마법사가 나타납니다.
- 일반 설정(General Settings): 컨테이너 이름(예:
my-nginx)을 입력하고, 자동으로 다시 시작(Enable auto-restart)을 체크해두는 게 좋습니다. - 포트 설정(Port Settings): Nginx는 기본적으로 80번 포트를 사용합니다. 호스트 포트(Local Port)를 비워두면 자동으로 할당되지만, 특정 포트(예: 8080)로 지정해서 사용하고 싶으면 입력하면 돼요. 저는 보통 8080으로 매핑해서 사용합니다.
- 볼륨 설정(Volume Settings): Nginx 설정 파일이나 웹 페이지 파일을 외부 폴더와 연결(마운트)할 수 있습니다. 예를 들어, Synology NAS의
/docker/nginx/html폴더를 컨테이너 내부의/usr/share/nginx/html경로에 마운트하면, NAS 폴더에 웹 페이지를 넣으면 바로 Nginx를 통해 서비스할 수 있어요. 💡 주의! NAS 폴더에 권한이 없으면 Nginx가 시작되지 않거나 파일을 읽지 못할 수 있으니, 읽기/쓰기(Read/Write) 권한을 꼭 확인해주세요.
- 일반 설정(General Settings): 컨테이너 이름(예:
- 설정 완료 후 적용(Apply) 버튼을 누르면 컨테이너가 생성되고 바로 실행돼요.
이제 웹 브라우저에서 http://[NAS_IP_주소]:8080으로 접속해보세요. Nginx 기본 페이지가 보인다면 성공입니다! ✅
2. Docker Compose로 여러 서비스 한 번에 관리하기 (Watchtower 예시)
하나의 컨테이너는 UI로 관리하기 편하지만, 여러 컨테이너가 서로 연동되거나 복잡한 설정을 해야 할 때는 Docker Compose(도커 컴포즈)가 빛을 발합니다. YAML(야믈) 파일 하나로 여러 컨테이너의 설정과 관계를 정의할 수 있거든요. 저는 주로 Watchtower(왓치타워) 같은 유틸리티 컨테이너를 Docker Compose로 배포해서 사용합니다. Watchtower는 실행 중인 Docker 컨테이너의 새 이미지가 있는지 주기적으로 확인하고 자동으로 업데이트해주는 고마운 녀석이더라고요. 매번 수동으로 업데이트하는 삽질을 줄여줍니다!
Synology NAS에서 Docker Compose를 사용하려면 SSH로 NAS에 접속해야 합니다. SSH 접속 방법은 제 이전 글에서 다루었으니 참고해주세요! (나중에 링크 추가 예정) ➡️
- SSH로 NAS에 로그인합니다.
- 컨테이너 설정을 저장할 폴더를 만듭니다. (예:
/volume1/docker/watchtower) - 해당 폴더로 이동하여
docker-compose.yml파일을 생성하고 아래 내용을 입력합니다.
version: '3.8'
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Seoul # 시간대 설정 (선택 사항)
- WATCHTOWER_CLEANUP=true # 이전 이미지 삭제
- WATCHTOWER_SCHEDULE=0 4 * * * # 매일 새벽 4시에 실행 (Cron 표현식)
restart: unless-stopped
위 YAML 파일은 containrrr/watchtower 이미지를 사용하고, Docker 데몬과 통신하기 위해 /var/run/docker.sock을 마운트합니다. 또한, 매일 새벽 4시에 컨테이너를 업데이트하고 이전 이미지를 정리하도록 설정했어요. 환경 변수(Environment Variables)를 통해 다양한 옵션을 줄 수 있으니, Watchtower 공식 문서를 참고하시면 더 많은 기능을 활용할 수 있습니다.
docker-compose.yml파일이 있는 디렉토리에서 다음 명령어를 실행하여 컨테이너를 배포합니다.
sudo docker compose up -d
-d 옵션은 컨테이너를 백그라운드에서 실행하라는 뜻입니다. 명령어를 실행하면 Watchtower 컨테이너가 생성되고 바로 작업을 시작할 거예요. 나중에 컨테이너를 중지하고 싶다면 sudo docker compose down 명령어를 사용하면 됩니다.
⚠️ 삽질 경험 & 트러블슈팅: 이것만 알면 고생 끝!
제가 Docker를 처음 다룰 때 가장 많이 겪었던 문제들은 바로 권한과 포트 충돌이었습니다. 독자분들은 저처럼 삽질하지 마시라고 몇 가지 팁을 드릴게요.
- 볼륨 마운트(Volume Mount) 권한 문제: 컨테이너가 호스트(NAS)의 특정 폴더에 접근해야 할 때, 해당 폴더에 컨테이너가 접근할 수 있는 권한이 없으면 에러가 발생합니다. 예를 들어, Nginx가 웹 페이지를 읽지 못하거나, Plex가 미디어 파일을 스캔하지 못하는 경우가 대표적이죠.
해결책: Synology DSM의 제어판 > 공유 폴더에서 해당 폴더의 권한 설정을 확인하고,everyone그룹 또는 Docker 컨테이너가 사용하는 사용자(대부분root또는 특정 UID/GID)에게 읽기/쓰기 권한을 부여해야 합니다. 저는 보통777권한을 주기도 하는데, 보안상 좋지 않으니 필요한 최소한의 권한만 부여하는 게 좋아요. - 포트 충돌(Port Conflict): 이미 NAS에서 사용 중인 포트(예: DSM 웹 UI의 5000/5001번)를 Docker 컨테이너가 사용하려고 하면 충돌이 발생합니다.
해결책: 컨테이너 생성 시 호스트 포트(Local Port)를 비어있는 다른 포트(예: 80 -> 8080, 443 -> 8443)로 변경하여 매핑해주면 됩니다.netstat -tulnp명령어로 현재 사용 중인 포트를 확인할 수 있더라고요. - 이미지 다운로드 실패: 인터넷 연결 문제나 Docker Hub(도커 허브) 서버 문제로 이미지를 다운로드하지 못하는 경우가 있습니다.
해결책: 인터넷 연결 상태를 확인하고, 잠시 기다렸다가 다시 시도하거나, 다른 미러 서버를 사용하는 방법을 찾아볼 수도 있습니다.
이런 문제들을 겪으면서 "아, 진짜 왜 안 되는 거야!" 하고 답답했던 순간들이 많았는데, 결국은 대부분 설정 문제더라고요. 꼼꼼하게 확인하는 습관이 중요합니다. 💡
✅ 결과 확인 및 컨테이너 관리
컨테이너가 제대로 실행되고 있는지 확인하는 것은 매우 중요합니다. Synology의 컨테이너 관리자 UI나 SSH 터미널에서 쉽게 확인할 수 있어요.
- 컨테이너 관리자 UI에서 확인: 왼쪽 메뉴의 컨테이너(Container) 탭을 클릭하면 현재 실행 중인 모든 컨테이너 목록과 상태를 한눈에 볼 수 있습니다. 각 컨테이너를 클릭하면 CPU, 메모리 사용량 등 자세한 정보를 확인할 수 있어요.
- SSH 터미널에서 확인:
sudo docker ps명령어를 사용하면 현재 실행 중인 컨테이너 목록을 확인할 수 있습니다. 모든 컨테이너(종료된 컨테이너 포함)를 보려면sudo docker ps -a를 사용합니다. 특정 컨테이너의 로그를 확인하고 싶다면sudo docker logs [컨테이너_이름_또는_ID]명령어를 사용하면 되더라고요.
이런 식으로 주기적으로 컨테이너 상태를 점검하고, 문제가 발생하면 로그를 확인하여 빠르게 대처하는 것이 중요합니다. 멘토인 제가 늘 강조하는 부분이죠! 😉
Portainer 웹 UI 대시보드에서 Docker 컨테이너 및 스택 개요를 보여주는 스크린샷입니다.
마무리하며: Synology NAS와 Docker, 무한한 가능성!
오늘은 Synology NAS에 Docker를 설치하고 컨테이너를 배포, 관리하는 방법에 대해 자세히 알아봤습니다. 제가 직접 홈랩에서 13년 동안 다양한 장비를 만져보면서 느낀 건, Synology NAS와 Docker의 조합은 정말 강력하다는 겁니다. 여러분의 NAS를 단순한 파일 서버를 넘어, Plex 미디어 서버, Home Assistant 스마트 홈 허브, Nextcloud 개인 클라우드 등 무궁무진한 서비스의 허브로 탈바꿈시킬 수 있어요.
물론 처음에는 생소하고 어려운 부분도 있을 겁니다. 저도 그랬거든요! 하지만 한 번 익숙해지면 이 편리함에서 헤어나오기 어렵습니다. 삽질은 성장의 어머니라고 하잖아요? 😅 여러분의 삽질을 줄여드리고자 이 글을 썼으니, 부디 도움이 되셨기를 바랍니다.
다음 글에서는 Synology NAS에서 Reverse Proxy(리버스 프록시)와 Let's Encrypt(렛츠 인크립트)를 활용하여 Docker 컨테이너에 외부에서 안전하게 접근하는 방법에 대해 다뤄볼 예정입니다. 기대해주세요! 그럼 다음 글에서 또 만나요! 👋
'IT > Nas' 카테고리의 다른 글
| [NAS] Synology NAS 데이터 복구: 실수 삭제부터 RAID 재구성까지 완벽 가이드 (0) | 2026.05.15 |
|---|---|
| [Nas] NAS RAID 구성 비교: Synology SHR vs TrueNAS ZFS RAID (1) | 2026.05.15 |
| [Nas] TrueNAS CORE vs SCALE: 홈랩 및 소규모 비즈니스 NAS 선택 가이드 (1) | 2026.05.13 |
| [NAS] Synology DSM 7.x 최신 업데이트: 주요 변경점 및 안정적 업데이트 가이드 (0) | 2026.05.11 |
| [NAS] TrueNAS ZFS 스냅샷과 복제: 데이터 보호 전략 (0) | 2026.05.10 |
| [Nas] TrueNAS SMB 성능 최적화: 고속 파일 공유를 위한 설정 가이드 (0) | 2026.05.09 |