화. 7월 22nd, 2025

🌐 서론: 왜 개인 호스팅에 도커인가?

개인 호스팅 서버(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 관리 도구
    Portainer UI 예시
  • 설치:
    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)
  • 대시보드:
    Uptime Kuma

🏗️ 6. 도커 환경 구성 핵심 팁

  1. 네트워크 분리:
    docker network create app_network
    docker run --network=app_network --name my_app ...
  2. 볼륨 관리:
    -v /호스트/경로:/컨테이너/경로 대신 네임드 볼륨 사용 권장:
    docker volume create db_data
    docker run -v db_data:/var/lib/mysql ...
  3. 리소스 제한:
    --memory=512m --cpus=1로 OOM(Out-Of-Memory) 방지
  4. 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:

💎 결론: 시작하기 위한 체크리스트

  1. [필수] 도커 설치: curl -fsSL https://get.docker.com | sh
  2. [권장] 도커 컴포즈 설치: 문서 참조
  3. [선택] Portainer 설치 → 시각적 관리
  4. [실전] Nginx Proxy Manager로 첫 도메인 연결
    > ✨ 성공 포인트: “하나씩 구현하고 조립하라! 단일 컨테이너 테스트 → 네트워크 연결 → 볼륨 추가”

📚 추천 학습 자료:

> “개인 서버가 슈퍼컴퓨터로 변하는 마법 ✨ – 오늘 한 걸음이 내일의 자동화된 인프라를 만듭니다!” D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다