::: IT인터넷 :::

시놀로지 NAS의 Nexus에 Push한 Docker 이미지를 NAS에서 사용하기

정보보안썰문가 곰탱이푸우 2021. 6. 30. 08:20
반응형

이전 포스팅에서 시놀로지 NAS에 설치한 Nexus에 Docker 이미지를 Push하는 것을 진행했다.

 

시놀로지 NAS에 설치한 Nexus에 Docker 이미지 Push 하기

예전 포스팅에서 시놀로지 NAS에 Docker를 이용하여 Nexus를 구축하고, Docker 사설 저장소 구축까지 완료했다. 이 정도만 설정해도 사설 저장소를 통한 Docker 이미지를 일반적인 개발 PC나 서버에서 사

www.bearpooh.com

 

그렇다면 해당 이미지를 시놀로지 NAS의 Docker 앱에서도 사용할 수 있을까?

 

결론은 가능하다.

삽질을 여러번 하긴 했지만 생각보다 간단하다. (이 문장의 핵심은 간단하다가 아닌 생각보다 이다.. ^^;;)

 

SSH 서비스 활성화

먼저 ssh를 통해 NAS에 접속해서 Docker 앱의 설정을 변경해야 한다.

 

시놀로지 NAS의 제어판을 실행하고, 우측 상단의 '고급 모드'를 클릭한다.

 

제일 하단의 '응용 프로그램' 탭의 '터미널 및 SNMP'를 실행한다.

 

SSH 서비스 활성화에 체크하고, 사용하고자 하는 포트를 입력한다.

기본은 22이지만 공격자들이 사랑하는 포트이므로 다른 포트를 지정한다.

작업이 모두 끝나면 반드시 SSH 서비스 활성화는 체크 해제하여 비활성화 한다.

 

 

Docker 앱의 설정 변경

ssh 명령을 사용하여 시놀로지 NAS에 접속한다. DSM에서 사용하는 아이디와 패스워드를 사용한다.

접속에 성공하면 sudo -i 를 입력하여 관리자 계정으로 전환한다. 비밀번호는 DSM의 아이디와 동일하다.

명령어는 ssh DSM계정명@NAS주소 -p 포트 형태이다.

 

/var/packages/Docker/etc 경로로 이동하여 dockerd.json 파일 내용을 확인한다.

 

vi dockerd.json 명령을 실행하여 dockerd.json 파일을 수정한다.

insecure-registries 옵션을 추가하고, Nexus를 설치할 때 지정한 docker-local과 docker-repos의 주소와 포트를 입력한다. 

Nexus에서는 5000, 5001로 지정했으나 리버스 프록시로 5500, 5501로 설정했으므로, 5500과 5501을 사용한다.

registry가 아닌 registries임을 주의하자. registry로 입력하는 바람에 꽤 많은 시간을 허비했다.

 

위의 내용은 Docker 사설 저장소 구축 포스팅의 'Docker 클라이언트 설정' 내용과 동일하다.

 

Nexus3를 이용한 Docker 사설 저장소 구축

Nexus3를 이용한 Docker 사설 저장소 구축은 3개의 저장소가 필요하다. hosted (Local) - 내부에서 생성한 Docker 이미지 파일을 배포 (Push)한다. proxy (Remote) - 외부의 Docker 저장소의 이미지들을 저장하고..

www.bearpooh.com

 

수정이 완료되면 esc 누른 후 :wq를 입력하여 저장하고 종료한다.

 

cat 명령으로 dockerd.json 파일을 확인해보면 정상적으로 입력된 것을 확인할 수 있다.

 

 

Docker 앱 재시작

dockerd.json의 수정 사항을 반영하기 위해 Docker 앱을 재시작한다.

 

시놀로지 DSM에서 패키지 센터를 누르고 Docker를 찾는다.

 

열기 버튼이 아닌 아이콘이나 이름을 클릭하면 Docker 앱의 상세화면을 볼 수 있다.

열기 버튼 우측의 화살표 (▼)를 클릭하고 '중지'를 누르면 중단된다.
(혹시 실행 중인 Docker 컨테이너가 있다면 먼저 종료해야 한다.)

중지가 완료되면 다시 '실행'을 눌러 재시작한다.

 

기존에 Nexus나 Jenkins 같은 컨테이너를 생성할때 '자동으로 재시작' 옵션에 체크했다면, 해당 컨테이너가 자동으로 재시작하므로 조금 기다린다.

그렇지 않다면 Docker 앱 실행 후 컨테이너 탭으로 이동하여 직접 스위치를 올려준다.

 

 

Docker 앱의 레지스트리 설정

Docker 앱의 레지스트리 탭을 클릭하고 설정을 클릭한다.

 

기본적으로 Docker Hub와 Aliyun Hub가 설정되어 있고 삭제가 불가능하다.

추가 버튼을 클릭한다.

 

insecure-repositories에 입력한 docker-repos의 주소와 포트를 입력하고 확인 버튼을 클릭한다. 

  • 프로토콜은 http:// 로 지정한다. (insecure-registries 옵션이 http 프로토콜을 사용하겠다는 의미이다.)
  • 주소는 localhost나 IP는 허용되지 않는다. 도메인을 입력해야 한다.
  • 포트는 5500 포트로 지정했다. 물론 docker-local로 지정한 5501 포트도 사용 가능하다.

 

우측 상단의 '사용' 버튼을 누르면 사용 중에 체크가 활성화 된다. 그리고 종료 버튼을 클릭한다.

 

사용 버튼을 누르면 자동으로 해당 저장소에서 사용 가능한 Docker 이미지를 검색한다.

test/hello-world 이미지를 Push 했었는데 정상적으로 나타난다.

 

Docker 로컬 저장소에 Push 하는 것은 아래 포스팅을 참고한다.

 

시놀로지 NAS에 설치한 Nexus에 Docker 이미지 Push 하기

예전 포스팅에서 시놀로지 NAS에 Docker를 이용하여 Nexus를 구축하고, Docker 사설 저장소 구축까지 완료했다. 이 정도만 설정해도 사설 저장소를 통한 Docker 이미지를 일반적인 개발 PC나 서버에서 사

www.bearpooh.com

 

 

선택한 이미지 다운로드 및 컨테이너 생성

 

해당 이미지를 선택하고 다운로드를 클릭하거나, 해당 이미지를 더블클릭하면 다운로드가 진행된다.

insecure-registries 옵션이 정상적으로 적용되지 않으면 DSM 우측에 아래와 같은 다운로드 실패 메시지가 출력된다.

 

다운로드가 정상적으로 진행되면 이미지 탭에서 다운로드 된 것을 확인할 수 있다.

 

다운로드 된 이미지를 더블클릭하면 컨테이너 생성 창이 출력된다.

컨테이너 이름을 보면 해당 이미지의 저장소 경로 (URL+포트명) - Docker 이미지 태그 형태로 되어 있고 붉은색으로 표시된다.

컨테이너를 생성할때에는 해당 저장소 경로는 삭제하고, 원하는 이름으로 변경한다.

 

시놀로지 NAS의 Docker 앱의 기본 설정만으로도 Docker Hub에 존재하는 Docker 이미지를 충분히 사용할 수 있다.

그러나 이와 같이 진행하면 자체적으로 생성하거나 빌드한 Docker 이미지도 시놀로지 NAS에서 사용할 수 있다.

 

참고사항
이미 Nexus를 설정하였기 때문에 약간 복잡하게 진행했지만 더 편한 방법이 있다.

Docker에서 제공하는 Docker 이미지 중에 registry 이미지를 사용하면 사설 Docker 저장소 설정이 가능하다.
아래 포스팅을 참고한다.
https://smoh.tistory.com/221
 

Synology Nas를 이용한 Private Registry 구축

시놀로지 NAS를 이용한 개인 저장소 구축. 시놀로지 NAS를 이용해 Private Registry를 구축해 봅니다. 1. Registry 설치. 시놀로지 도커를 이용해 레지스트리를 설치합니다. 볼륨 설정은 다음과 같이 추가

smoh.tistory.com

 

반응형