Portainer 설치하고 Docker 관리하기

Portainer 설치하고 Docker 관리하기

Docker 컨테이너들을 웹 UI로 쉽게 관리하고 싶다면 Portainer가 최고의 선택이다. 복잡한 명령어 없이도 컨테이너, 이미지, 볼륨, 네트워크를 직관적으로 관리할 수 있다.

🎯 Portainer란?

Portainer는 Docker 환경을 위한 오픈소스 웹 기반 관리 도구다. 다음과 같은 기능을 제공한다:

  • 🐳 컨테이너 생성, 시작, 중지, 삭제
  • 📦 이미지 관리 및 Docker Hub 연동
  • 📊 리소스 모니터링 및 로그 확인
  • 🔧 Docker Compose 스택 관리
  • 👥 사용자 및 권한 관리

📋 사전 요구사항

  • Docker가 설치되어 있어야 한다
  • 포트 9000번이 사용 가능해야 한다

🚀 Portainer CE (Community Edition) 설치

방법 1: Docker 볼륨 사용 (추천)

1. Portainer 데이터 볼륨 생성

docker volume create portainer_data

2. Portainer 컨테이너 실행

docker run -d \
  -p 8000:8000 \
  -p 9000:9000 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

방법 2: 호스트 디렉토리 바인드

1. 데이터 디렉토리 생성

sudo mkdir -p /opt/portainer/data

2. Portainer 컨테이너 실행

docker run -d \
  -p 8000:8000 \
  -p 9000:9000 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/portainer/data:/data \
  portainer/portainer-ce:latest

🔧 Docker Compose로 설치 (추천)

더 체계적인 관리를 위해 Docker Compose를 사용하는 방법:

1. docker-compose.yml 파일 생성

mkdir -p ~/portainer
cd ~/portainer
# docker-compose.yml
version: '3.8'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "8000:8000"
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    environment:
      - TZ=Asia/Seoul

volumes:
  portainer_data:

2. Portainer 실행

docker compose up -d

🌐 Portainer 초기 설정

1. 웹 브라우저로 접속

http://localhost:9000

또는 서버 IP 주소를 사용:

http://서버IP:9000

2. 관리자 계정 생성

  • Username: 원하는 관리자 사용자명 입력
  • Password: 최소 12자 이상의 강력한 비밀번호 입력
  • Confirm password: 비밀번호 재확인

⚠️ 중요: 첫 접속 후 5분 이내에 설정을 완료해야 한다!

3. Docker 환경 연결

  • Get Started 버튼 클릭
  • Local 선택 (같은 서버에서 실행 중인 경우)
  • Connect 버튼 클릭

🔐 보안 설정 (선택사항)

HTTPS 설정

프로덕션 환경에서는 HTTPS를 사용하는 것이 좋다:

# SSL 인증서가 있는 경우
docker run -d \
  -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  -v /path/to/certs:/certs \
  portainer/portainer-ce:latest \
  --ssl \
  --sslcert /certs/portainer.crt \
  --sslkey /certs/portainer.key

방화벽 설정 (UFW 사용 시)

# 포트 9000 허용
sudo ufw allow 9000/tcp

# 특정 IP에서만 접근 허용 (더 안전함)
sudo ufw allow from 192.168.1.0/24 to any port 9000

📊 Portainer 사용법

대시보드 둘러보기

  • Home: 전체 환경 개요
  • Containers: 실행 중인 컨테이너 목록
  • Images: 다운로드된 이미지 목록
  • Networks: Docker 네트워크 관리
  • Volumes: 볼륨 관리
  • Stacks: Docker Compose 스택 관리

새 컨테이너 생성하기

  1. ContainersAdd container 클릭
  2. Name: 컨테이너 이름 입력
  3. Image: 사용할 이미지 입력 (예: nginx:latest)
  4. Port mapping: 필요한 포트 매핑 설정
  5. Deploy the container 클릭

🔄 Portainer 업데이트

1. 기존 컨테이너 중지 및 제거

docker stop portainer
docker rm portainer

2. 새 버전으로 재실행

docker run -d \
  -p 8000:8000 \
  -p 9000:9000 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Docker Compose 사용 시

cd ~/portainer
docker compose pull
docker compose up -d

🚨 문제 해결

Portainer에 접속할 수 없는 경우

# 컨테이너 상태 확인
docker ps | grep portainer

# 포트 사용 확인
sudo netstat -tlnp | grep :9000

# 로그 확인
docker logs portainer

권한 문제가 발생하는 경우

# Docker 소켓 권한 확인
ls -la /var/run/docker.sock

# 필요시 권한 수정
sudo chmod 666 /var/run/docker.sock

💡 유용한 팁

1. 정기적인 백업

# Portainer 데이터 백업
docker run --rm \
  -v portainer_data:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/portainer-backup-$(date +%Y%m%d).tar.gz -C /data .

2. 리소스 모니터링 설정

  • SettingsFeature configuration에서 Enable features subject to subscription 체크
  • 컨테이너별 CPU, 메모리 사용량 실시간 모니터링 가능

3. 템플릿 활용

  • App Templates에서 미리 구성된 애플리케이션 스택 사용
  • WordPress, Nginx, PostgreSQL 등 원클릭 배포 가능