개발자의 공부방/서버 & 리눅스

도커] 시놀로지 NAS와 도커를 이용한 Docker registry 설정

  • -
728x90
반응형

서론

스프링웹서버를 시놀로지 NAS에 있는 도커에 올리기 위한 과정을 포스팅하려고 합니다.

docker registry를 이용해서 이미지를 NAS에 private하게 올려 사용하는 과정을 포스팅했습니다.

 

스킵한 내용

SSH를 이용해 NAS에 접속한 방법은 건너뛰었습니다.

SSH 설정은 아래 포스팅 참고해주세요.

ssh 로그인 설정 (tistory.com)

 

ssh 로그인 설정

1. localhost에서 ssh-key-gen을 사용한다 - public key와 private key를 생성한다 ssh-keygen 2. public key를 원격 호스트 (nas)에 복사한다 - ssh-copy-id를 사용한다 ssh-copy-id -i [id_rsa.pub 파일명] [사용자명]@example.com ssh

jjunii486.tistory.com

 

환경

ASUS 공유기 (RT-AC68U Merin firmware 386.5_2)

NAS (헤놀로지, 타오나스 DSM6.2.1-23824)

맥북 M1 Pro Ventura 13.6

 

1) DSM에서 도커 설치

패키지 센터에서 도커 검색 후 설치

도커 경로) /volume2/docker

* 볼륨은 본인의 하드디스크 설정을 어떻게 했느냐에 따라 다르기때문에 다를 수 있습니다.

 

2) Registry 설치를 위한 사전 폴더 경로 설정

registry 경로)

/volume2/docker/registry/varlibregistry : registry 이미지를 넣기 위한 경로

/volume2/docker/registry/tmpregistry : 임시 이미지 경로

/volume2/docker/registry/tmpregistrydev : 임시 이미지 경로

/volume2/docker/registry/auth : htpasswd를 설정을 위한 경로

/volume2/docker/registry/certs : 인증키를 넣기 위한 경로

 

3) DSM에서 Registry 이미지 설치 및 설정

Docker 열기 후 왼쪽 사이드바 레지스트리 클릭 및 registry 검색

설치 시 latest가 아닌 최신 버전으로 설치
(작성일 기준 2.8.3이 최신)

 

고급 설정을 누른 후 포트설정과 볼륨 설정을 합니다.

 

포트 설정 탭에서 포트를 설정.

로컬 포트 5050 (원하는 포트로 변경 하셔도 됩니다)

컨테이너 포트 5000

 

마운트 경로 설정.

2)에서 설정한 폴더 경로를 아래 사진과 같이 마운트 경로를 설정해줍니다.

포트 설정의 로컬 포트 확인
볼륨에서 폴더 경로 및 마운트 볼륨 경로 확인

 

4) 인증 설치

로컬에서 도커로 로그인할 때 필요한 아이디와 비밀번호를 만듭니다.

SSH로 NAS 접속 후 아래 명령어 입력

docker run --rm -ti xmartlabs/htpasswd [아이디] [비밀번호] > /volume2/docker/registry/auth/htpasswd

 

5) dockerd.json 설정

NAS 경로) /usr/syno/etc/packages/Docker/dockerd.json

(vi or vim을 이용해 넣는다.)

"insecure-registries" : ["192.168.1.100:5050"] 를 입력 후 본인의 내부IP 주소를 넣는다.

 

6) 역방향 프록시 설정

도메인 주소는 ASUS 공유기에서 제공하는 ***.asuscomm.com을 이용했습니다.

 

프로토콜: HTTPS

호스트이름: * (*으로 했을 시 NAS에 설정된 도메인주소가 기본설정으로 됩니다.)

포트: 5454 (변경해도 됩니다.)

HSTS 활성화: HTTP 연결을 자동으로 HTTPS으로 변경해줍니다.

 

대상: HTTP

호스트이름: localhost

포트: 5050 (registry 도커 이미지 설정 시 로컬 포트를 입력하면 됩니다)

 

7) NAS 방화벽 설정 및 포트포워딩 설정 

모든 설정을 다 했는데 방화벽으로 인해서 막히는 경우가 있습니다.

내장 응용 프로그램 규칙을 선택해 역방향 프록시 및 도커 포트 설정을 합니다.

또한 5454 포트도 방화벽에 추가해줍니다.

 

ASUS 공유기의 관리자페이지에서 포트포워딩 설정을 진행합니다.

역방향 프록시에서 설정한 소스포트를 열어줍니다.

 

8) 테스트

iterm 및 터미널에서 아래 curl 명령어를 이용 혹은 postman을 이용해봅니다.

curl -X GET https://도메인주소:5454/v2/_catalog

 

응답 결과가 아래와 같이 나오면 성공입니다.

{"repositories":[]}

 

저는 이미 테스트한 이미지가 올라가서 repositories 목록에 이미지가 떠있네요

 

마무리

DSM에서 도커 대시보드를 누릅니다

레지스트리 -> 상단 설정 -> 추가

레지스트리 이름 : 원하는 이름 설정

레지스트리 URL : https://admin.asuscomm.com:5454    

 

이제 터미널에서 docker login을 진행 후 로컬에서 만든 이미지를 push해봅니다.

정상적으로 push가 완료되면 레지스트리에 올린 이미지 목록이 뜹니다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.