본문 바로가기

시놀로지 DS918+ 로 넘어온 이유 중 하나가 도커를 사용할 수 있다는 것 이였습니다. 기존에 사용하던 것은 Synology DS214+ 였는데 해당 기기에서는 성능 때문이였는지 Docker패키지를 설치할 수 없었습니다.
저도 도커 초보라서 많이 알지는 못하지만 정리차원으로 포스팅을 해 볼까 합니다.

도커(Docker)

도커란 무엇인가??

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 라고 인터넷에 많이 올라와 있으나 초보자들에게는 이게 뭔~ 소린가~ 할 것입니다. 그래서 짧고 간단하게 풀어서 설명을 먼저 해 볼까 합니다.

VirtualBox, VMware 같은 가상머신이라는 것이 있습니다. 가상머신은 컴퓨터 안에 또 다른 가상의 컴퓨터를 띄우는 기술을 말하는데 MAC컴퓨터에 windows를, Windows컴퓨터에서 또 다른 windows나 리눅스를 가상머신으로 띄워서 사용할 수 있습니다.

가상머신의 가장 큰 단점은 자원의 비효율화라고 할 수 있습니다. 예를들어 모체 컴퓨터의 메모리 (RAM)가 16G라고 한다면 가상머신을 하나 띄울 때 마다 16G에서 일부를 가상머신에 고정적으로 할당을 해 줘야 합니다. 만약 Windows를 띄울거라면 최소한 4G이상을 할당해야 하는 것이지요. 그렇게 될 경우 가상머신을 2~3개 띄우면 모체 컴퓨터 뿐만 아니라 가상머신까지도 메모리(RAM)가 부족하여 버벅대기 시작 할 것입니다.

이게 개인컴퓨터인 경우는 크게 문제가 되지 않겠지만 여러 대의 서버를 가상으로 운영하는 곳이라면 굉장히 비 효율적인 시스템이 됩니다. 잘 사용하지도 않는 가상머신이라도 고정된 자원을 미리 할당해 놔야 하는 것이닌까요. 클라우드센터를 운영하게 된다면 효율성 면에서 가상머신으로는 운영 할 수가 없게 됩니다.

Docker가 큰 관심을 받는 것은 이부분을 해결했기 때문이라고 볼 수 있습니다.
제공자는 OS 및 서비스를 이미지화 해서 제공을 하고 사용자는 필요한 이미지를 다운로드 받아 컨테이너로 실행을 하게 됩니다. 이러한 컨테이너는 애플리케이션과 격리된 상태에서 실행하기 때문에 쉽게 설치, 재설치, 삭제가 가능합니다.

단점이라면 리눅스 기반이라는 점 입니다. 모체 컴퓨터는 windows, Mac용으로 설치할 수 있게 제공을 하고 있으나 띄워지는 가상머신은 아직 리눅스만 가능합니다.

시놀로지 도커(Docker) 스테이션의 기본 사용법

시놀로지도 리눅스 기반으로 돌아가는 시스템이라 도커를 활용할 수 있습니다. 그렇다고 모든 시놀로지 NAS에 도커 패키지를 설치할 수 있는건 아니니 자신의 NAS를 확인해 볼 필요는 있습니다.

시놀로지 도커 설치하기

패키지센터에서 도커설치하기
설치는 간단하고 어렵지 않습니다. 다른 패키지를 설치하는 것 처럼 설치를 하면 됩니다.
저는 미리 설치했으므로 위와 같이 "열기" 표시가 되어 있습니다.

개요화면

개요화면
개요화면은 도커 시스템의 현재 사용현황을 보여주는 대시보드 입니다.
현재 6개의 컨테이너가 실행되고 있는 것을 볼 수 있고 각각의 리소스를 확인할 수 있습니다.

  1. 현재 시놀로지 나스의 CPU와 RAM의 사용현황을 실시간으로 보여 줍니다.
  2. synology_gitlab의 사용현황을 보여주고 있습니다. 해당 컨테이너는 CPU는 0.82%, RAM은 463MB를 사용하고 있는 것을 알 수 있습니다.
  3. 패키지 센터에서 gitlab을 설치하면 자동으로 따라서 설치되는 컨테이너 입니다. synology_gitlabredis기반으로 개발되었기 떄문에 같이 설치가 되는것 같습니다 이 처럼 컨테이너는 다른 컨테이너를 연계해서 사용할 수 있게 구성되어 있습니다.

레지스트리 관리

레지스트리
개발자들의 소스공유 사이트인 Github처럼 Docker은 Docker hub가 있어서 이미지를 공유하고 있습니다.

레지스트리 메뉴는 이 Docker hub에 있는 목록을 불러와 보여줍니다. 다시말하면 레지스트리에 있는 목록은 내 시놀로지가 아니라 아직 외부에 있는 파일이라는 뜻입니다. 이 목록에서 내가 설치하고 싶은 이미지를 찾아 다운로드 받아서 사용하게 됩니다.

  1. 내가 원하는 이미지가 있는지 검색창을 활용하여 검색을 할 수 있습니다.
  2. 원하는 이미지가 있다면 선택을 합니다.
  3. 다운로드 버튼을 누르게 되면 이미지가 내 시놀로지 나스로 다운로드가 됩니다.
  4. 명찰이 있는 것은 공식 이미지라는 뜻입니다.
  5. 인기도라고 보시면 됩니다. 별표 숫자가 높은 이미지는 관심을 가져보시는 것도 좋습니다.

레지스트리 설정
공식적으로 사용하는 Docker hub 뿐만 아니라 다른 사설 허브도 사용할 수 있습니다.

  1. 설정 버튼을 누릅니다.
  2. 현재 Docker hub가 선택되어져 있는 것을 볼 수 있습니다. 이것을 다른 허브로 전환 할 수 있습니다.
  3. 만약 내가 원하는 Docker hub가 리스트에 없다면 다른 Hub를 등록하여 사용할 수도 있습니다.

이미지 관리

컨테이너를 생성해 주는 본체인 이미지에 대한 관리 입니다. 컨테이너가 시스템에 올라간 것을 말한다면 이미지는 시스템에 올리기 전의 파일 뭉치라고 보시면 됩니다.

이미지 추가

이미지 추가하기
레지스트리에서 이미지를 다운로드 할 수 도 있지만 이미지관리 메뉴에서도 이미지를 추가할 수 있습니다.

이미지를 추가하는 방법은 2가지가 있는데 URL로 추가하는 방법과 파일로 추가하는 방법입니다
각각 추가하는 방법에 따라 위와 같은 추가 창을 볼 수 있습니다.
URL은 https://registry.hub.docker.com/_/mysql 처럼 직접 이미지 경로를 지정하여 올릴 수도 있고 예전에 다운로드 받아놨던 파일을 선택하여 올릴 수도 있습니다.

이미지 내보내기

이미지를 추가할 뿐만 아니라 이미지를 내보낼 수도 있습니다. 내보낸 이미지는 위에서 설명한 것 차럼 이미지 추가 > 파일에서 추가를 통해 다시 올릴 수도 있습니다.

이미지 내보내기

  1. 내보내기 원하는 이미지를 선택합니다.
  2. 내보내기 버튼을 클릭합니다.
  3. 내보낼 위치를 선택합니다. 이미지에서는 Download를 선택했지만 아무 곳이나 상관없습니다.
  4. 약간의 시간이 지나면 해당 폴더에서 다운로드된 압축파일을 볼 수 있습니다.

이미지 실행하기

이미지를 실행한다는 것은 이미지를 컨테이너로 띄운다는 말과 같습니다. 이미지를 띄운다기 보다는 이미지 인스턴스를 하나 올린다고 보시는 것이 맞을 것 같습니다. 왜냐하면 컨테이너 이름만 다르다면 하나의 이미지로 여러 개의 컨태이너를 계속 생성할 수 있기 때문입니다.

실행하기
실행하고자 하는 이미지를 선택하고 실행버튼을 클릭합니다.

일반설정
컨테이너를 띄우기 위해서 몇가지 설정을 하게 됩니다.

  1. 컨테이너 이름을 입력하세요. 컨테이너이름은 현재 띄워져 있는 다른 컨텐츠와 이름이 달라야 합니다.
  2. 고급설정을 클릭하세요.

고급설정

  1. 불의사 사고나 기타 이유로 인해 해당 컨테이너가 죽는다면 자동으로 재시작을 실행해 줍니다. 이 설정은 좋을 수도 있고 좋지 않을 수 도 있습니다. 크게 중요하지 않거나 확실한 경우가 아니면 해제를 해 놓는 것이 좋습니다.
  2. DSM의 바탕화면에 아이콘을 생성해 줍니다. 이 아이콘을 눌렀을때 웹페이지를 띄워줄지 아니면 상태 화면을 띄워줄지에 대한 선택입니다. 크게 중요하지 않습니다.

볼륨 설정하기
중요할 수 있는 부분입니다.
1번은 시놀로지 나스의 폴더 위치이고 2번은 가상시스템의 폴더 위치입니다.
1번에 어떤 파일을 업로드하거나 저장을 하면 실시간으로 해당 파일은 가상시스템의 해당 위치에 자동으로 복사가 됩니다. 실시간 동기화가 됩니다.
그래서 개발 소스를 나스 폴더에 저장을 하면서 동일한 소스가 가상시스템에도 저장이 되기 때문에 가상시스템에서 결과물을 바로 볼 수 있게 됩니다.
만약 가상시스템이 마음에 들지 않아 컨테이너를 삭제해도 원본 개발소스는 그대로 보전이 되는 것입니다. 중요합니다.

포트 설정하기
포트 설정도 중요할 수 있는 부분입니다.
1번은 시놀로지 나스의 포트번호이고 2번은 가상시스템(컨테이너)의 포트번호입니다.
일반적으로 2번인 가상시스템(컨테이너)의 포트번호는 이미지의 상세보기에 나와 있습니다. 이미지를 개발한 사람이 이 이미지는 몇번 포트를 사용합니다. 라고 공지를 하는 것이지요.
시놀로지 나스 포트는 본인이 지정하면 됩니다. 보통은 이미지와 동일한 포트를 사용하지만 중복되는 경우 다른 포트를 사용해도 괜찮습니다.

지정한 로컬포트는 시놀로지 제어판의 보안영역에서 포트를 개방해 줘야 합니다.
외부에서 접속을 하기 원한다면 공유기에서도 포트포워딩을 설정해 줘야 합니다.

환경설정

  1. 변수의 값에 경로명을 입력하면 가상시스템 어디 에서 든지 해당 명력어를 실행 시킬 수 있습니다.
  2. 실행명령은 해당 컨테이너가 처음 실행되는 시점에 가장 먼저 실행되는 명령어 입니다.
    여기서는 아까 지정한 마운트경로에 있는 index.jsnode명령으로 실행시켜라 라는 뜻입니다. index.js는 기초적인 웹서버를 띄우게 제가 간략히 개발을 했습니다. Hello world를 띄워 주게 됩니다.

실행되는 모습

간략하게 시놀로지 나스의 도커사용법을 알아 봤습니다.
여기에도 약간 나오기는 했지만 다음시간에는 도커로 Nodejs웹서버를 실행시키는 것에 대한 포스팅을 해 보도록 하겠습니다.

나만모르는 이야기

여행, 맛집,IT, 리뷰에 대한 이야기를 공유하는 블로그 .