Synology NAS에 Portainer 설치하기

Synology NAS에는 컨테이너 관리자(Container Manager)라는 앱을 통해 도커 컨테이너를 GUI로 관리 할 수 있다. 나같은 초보자들에게는 충분히 쓸만한 기능을 제공 하지만, 보다 고급 기능에 대한 활용을 해보려고 하니까 역시 조금 부족함이 느껴져서 Portainer라는 별도의 도구를 설치해 보려고 했다. 이런 상황에서는 Portainer 사용하는 것을 충분히 고려해 볼 만하다고 생각된다.

  • 여러 컨테이너를 한 눈에 바로 관리 하고 싶을 때
  • docker-compose파일을 이용해서 환경을 구성하고 싶을 때
  • 네트워크, 볼륨, 이미지 등을 더 세세하게 제어 하고 싶을 때
  • 컨테이너 수가 많아져서 정리가 필요할 때

처음에는 Container Manager가 있는데 굳이 Portainer가 필요할까? 괜히 깔아서 둘이 섞이고 꼬여서 문제가 발생하는 것은 아닐까 걱정을 했었다. 그런데 Portainer는 같은 Docker 엔진위에서 작동하기 때문에, NAS의 Container Manager와 Portainer는 동일한 컨테이너 환경을 공유한다. 즉, 어느쪽에서든 컨테이너를 만들고 관리 할 수 있다는 말이고, 기능적으로는 일부 겹치는 일이 있더라도 충돌 할 일은 없고 오히려 Portainer 쪽에서 더 세세한 컨트롤을 할 수 있으니 Portainer를 깔아서 손해 볼 것은 없다는 생각이다.

Portainer를 쓰면 좋은 이유

  • 더 많은 기능 : 네트워크, 볼륨, 이미지 관리 등 컨테이너 외의 요소 들도 제어 가능
  • 더 직관적인 UI : 컨테이너 상태와 로그를 한 눈에 확인 할 수 있음
  • 멀티 호스트 지원 : 로컬 네트워크에 있는 여러 Docker 서버를 하나의 화면에서 관리 할 수 있음
  • 업데이트 자유도 : 시놀로지 UI는 업데이트가 느리거나 제한적일 수 있는데, Portainer는 최신 버전 기능을 빠르게 사용 할 수 있음
  • docker-compose 지원 : GUI로 docker-compose파일 업로드 및 실행 가능

Portainer 설치 방법

DSM 웹 인터페이스에서는 Portainer를 설치 할 수 없기 때문에 SSH로 NAS에 접속해서 CLI 방식을 이용해야 한다. SSH 접속 설정과 방법은 다음에 다른 글을 통해 포스팅 할 예정이다.

어떠한 설치든 간에 공식 문서를 참고하는 것이 제일 정확하다.

공식 문서에서는 다음과 같은 docker run 명령어를 예시로 설명하고 있다.

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

위의 코드를 참고하여 나는 docker-compose 파일을 만드는 방법을 사용했다. 다음은 위의 docker 명령어 실행과 유사한 역할을 수행하는 docker-compose.yml 파일이다.

version: '3.3'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"     # HTTP
      - "9443:9443"     # By default, Portainer generates and uses a self-signed SSL certificate to secure port 9443

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock   # Docker 제어용 소켓 공유
      - portainer_data:/data                        # 설정, 사용자 정보 등 저장

volumes:
  portainer_data:

공식문서에서는 8000번 포트를 사용하라고 되어있는데 막상 HTTP 접속을 8000번 포트로 이용하려고 보니 오류가 발생한다. 찾아보니 8000번 포트는 Portainer의 ‘Edge Agent’ 기능을 위한 포트라고 한다. HTTP 접속을 하려면 그냥 9000번 포트를 쓰면 된다. 나는 DNS를 적용해서 우리집 내부망에서만 접속할 예정이라 HTTP, HTTPS 뭐 어느걸 사용하던지 큰 상관은 없어서 일단 둘을 다 남겨두었다. 본인의 자유에 따라 설정하면 될 것 같다. HTTPS를 하게 되면 보안은 더 좋아지겠지만 SSL 인증서도 받아야 하고 다소 귀찮을 수 있겠다.

NAS로 docker-compose 파일 옮기기

docker-compose.yml파일은 NAS로 옮겨야 실행 할 수 있다. 방법은 여러가지가 있으니 각자 본인이 쓰기 쉬운 방법으로 하면 되겠다. 자세한 내용은 다음에 따로 포스팅 할 예정이다.

  • NAS의 공유폴더를 이용해서 PC에서 직접 파일을 복사하는 방법
  • scp 명령어를 이용해서 터미널에서 직접 전송하는 방법
  • GitHub에 올리고, NAS에서 git clone 하는 방법

docker-compose 실행

docker-compose.yml 파일이 NAS에 옮겨졌다면, 터미널에서 해당 디렉토리로 이동한 뒤 다음 명령어를 입력하여 실행한다.

cd /volume1/docker/portainer    # 예시 경로
sudo docker-compose up -d

명령을 실행할 때 sudo를 사용한 이유는 permission denied 오류 발생을 막기 위해서다. 내가 SSH 접속한 것은 그냥 사용자 계정을 통한 것인데, docker compose 실행을 위해서는 root의 권한이 필요하기 때문이다.

조금 기다리고 나면 이미지가 다운로드 되고 컨테이너가 실행된다.

Portainer 접속

브라우저에서 다음 주소를 입력해서 접속한다.

https://<NAS IP>:9443

초기화면에서 관리자 계정을 설정하라는 창이 나오면 성공적으로 설치 된 것이다. 만약 https로 접속 할 시 self-signed 인증서를 사용하기 때문에 브라우저에서 보안 경고가 뜰 수는 있으나 무시하고 진행해도 된다.

마무리

Portainer는 설치도 어렵지 않고, 한 번 설치하고 나면 컨테이너 환경을 훨씬 직관적이고 유연하게 만들어 준다. Synology NAS를 조금 더 적극적으로 활용하고 싶다면 꼭 한 번 설치해보자. 생각보다 어렵지 않다.

그 다음은?

현재는 https://<NAS IP>:9443 을 입력해서 접속해야 되기 때문에 미관상 보기도 안 좋고 나중에 까먹기 딱 좋다. 추후에 NAS의 DSM 역방향 프록시 기능과 DNS 설정을 통해 https://portainer.mydomain.com 과 같은 서브도메인으로 접속이 가능하도록 구성할 예정이다. 이 부분 역시 다른 포스팅에서 자세히 다룰 예정이다.

Comments

답글 남기기

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