🌐 서론: 왜 개인 호스팅에 도커인가?
개인 호스팅 서버(VPS 또는 홈서버)에서 도커를 사용하면 “격리된 환경” 과 “간편한 배포” 를 동시에 얻을 수 있습니다.
- 🔄 재현성: 개발 환경과 프로덕션 환경을 동일하게 유지
- ⚡ 효율성: 한 서버에서 웹, DB, 애플리케이션을 독립적으로 운영
- 🛡️ 보안: 컨테이너 간 침해 사고 확산 방지
> 💡 예시: Ubuntu 서버에 Nginx + PHP + MySQL을 설치할 때 의존성 충돌로 고생했다면? 도커가 해결책!
� 1. 웹 서버 & 리버스 프록시
🔹 Nginx Proxy Manager
- 기능: SSL 자동 갱신(Let’s Encrypt) + 도메인 관리 GUI
- 사용법:
docker run -d -p 80:80 -p 443:443 -v /data/nginx-proxy:/data nginxproxymanager/nginx-proxy-manager
- 장점:
your-domain.com → 192.168.1.10:8080
같은 설정을 웹 UI로 3분 완성! - 📌 팁: 80/443 포트는 이 컨테이너에만 할당하고 다른 앱은 내부 포트로 연결.
🔹 Traefik
- 기능: 동적 설정 지원(도커 라벨 자동 인식)
- 적합한 경우: 마이크로서비스 아키텍처 구성 시
🗄️ 2. 데이터베이스
🔹 MySQL/MariaDB
- 보안 설정 팁:
docker run -d --name mysql_db \ -e MYSQL_ROOT_PASSWORD=my_secret_pw \ -v /mydata/mysql:/var/lib/mysql \ mysql:8.0
- 📂 볼륨 필수: 컨테이너 삭제 시 데이터 유실 방지
- 🔐 네트워크 격리:
--network app_network
로 웹 서버와만 통신
🔹 PostgreSQL
- 추천 시나리오: GIS 데이터 또는 복잡한 쿼리 처리 필요 시
� 3. 개발/배포 도구
🔹 Portainer
- 기능: 도커 GUI 관리 도구
- 설치:
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
- 장점: 컨테이너 실행/중지, 로그 확인, 볼륨 관리 가능
🔹 Jenkins
- 사용처: CI/CD 파이프라인 구축
- 백업 팁:
/var/jenkins_home
볼륨 매핑 필수!
🧩 4. 미디어 & 자동화
🔹 Jellyfin
- 기능: 개인 넷플릭스 서비스 구축
- 하드웨어 가속:
# docker-compose.yml 일부 devices: - /dev/dri:/dev/dri # Intel QuickSync 활성화
🔹 Sonarr/Radarr
- 조합:
Sonarr(시리즈) + Radarr(영화) + qBittorrent + Jellyfin
= 😍 완전 자동 미디어 서버
📦 5. 유틸리티
🔹 Watchtower
- 기능: 컨테이너 자동 업데이트
- 안전 모드:
docker run -d --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower --cleanup --schedule "0 0 4 * * *"
> 매일 새벽 4시 업데이트 + 오래된 이미지 정리
🔹 Uptime Kuma
- 기능: 서비스 모니터링 + 알림(Telegram, Discord)
- 대시보드:
🏗️ 6. 도커 환경 구성 핵심 팁
- 네트워크 분리:
docker network create app_network docker run --network=app_network --name my_app ...
- 볼륨 관리:
-v /호스트/경로:/컨테이너/경로
대신 네임드 볼륨 사용 권장:docker volume create db_data docker run -v db_data:/var/lib/mysql ...
- 리소스 제한:
--memory=512m --cpus=1
로 OOM(Out-Of-Memory) 방지 - docker-compose.yml:
version: '3' services: web: image: nginx:alpine ports: ["8080:80"] db: image: mariadb:10.6 volumes: ["db_data:/var/lib/mysql"] volumes: db_data:
💎 결론: 시작하기 위한 체크리스트
- [필수] 도커 설치:
curl -fsSL https://get.docker.com | sh
- [권장] 도커 컴포즈 설치: 문서 참조
- [선택] Portainer 설치 → 시각적 관리
- [실전] Nginx Proxy Manager로 첫 도메인 연결
> ✨ 성공 포인트: “하나씩 구현하고 조립하라! 단일 컨테이너 테스트 → 네트워크 연결 → 볼륨 추가”
📚 추천 학습 자료:
- 도커 공식 문서
- Docker Hub (공식 이미지 검색)
> “개인 서버가 슈퍼컴퓨터로 변하는 마법 ✨ – 오늘 한 걸음이 내일의 자동화된 인프라를 만듭니다!” D