Welcome to Jaehai.Opslog
안녕하세요! 넓은 스펙트럼을 바탕으로 전체적인 그림을 보는 Ops Engineer 이재하입니다.
이번 글에서는 Synology NAS에서 Docker Private Registry를 생성하고,
docker.jaehai.com처럼 Private Registry에서 docker image pull 받을 때 개인 도메인을 사용할 수 있도록 설정해보겠습니다.
1. Container Manager
설치
2. 공유 폴더 생성
- Container Manager의 Auth 정보 및 Docker 이미지를 저장하기 위한 폴더를 생성해줍니다.
- docker 공유 폴더 생성
- auth 폴더 생성
Dockerhub처럼 로그인 해야만 사용할 수 있게 로그인 아이디와 비밀번호가 저장될 폴더입니다.
- var_lib_registry 폴더 생성
Docker Image가 실질적으로 저장될 폴더입니다.
3. registry
이미지 실행
- 메인 메뉴에서 Container Manger 실행
- 레지스트리 이동 후 registry 이미지를 컨테이너로 실행
- 자동 재시작 활성화 켜기
- 포트 설정
- 로컬 포트 : 자유
- 컨테이너 포트 : 5000
- 볼륨 설정(로컬 → 컨테이너)
- /docker/auth → /auth (rw)
- /docker/var_lib_registry → /var/lib/registry (rw)
4. 도메인 설정
- Route53 등에서 A Record를 NAS 외부 IP로 설정해주세요.
- 해당 세션을 다루기엔 각자의 상황이 너무 다르기 때문에 넘기겠습니다.
- Synology NAS에서 제어판 실행
- 제어판 → 보안 → 인증서에서 Private Registry를 사용할 도메인을 추가
5. Nginx(routing) 설정
- 제어판 → 로그인 포털 → 역방향 프록시 클릭
- 역방향 프록시 생성
외부에서 특정 도메인(예 : docker.jaehai.com)으로 접속 했을 때 Registry로 Redirect 되도록 설정
- 이름 : HTTP_docker
- 소스
- 프로토콜 : HTTP
- 호스트 이름 : 예시 도메인
- 포트 : 80
- 엑세스 제어 프로파일 : 구성되지 않음
- 대상
- 프로토콜 : HTTP
- 호스트 이름 : localhost
- 포트 : Container Manager에서 설정했던 로컬 포트
- 이름 : HTTPS_docker
- 소스
- 프로토콜 : HTTPS
- 호스트 이름 : 예시 도메인
- 포트 : 443
- HSTS 활성화 : 체크
- 엑세스 제어 프로파일 : 구성되지 않음
- 대상
- 프로토콜 : HTTP
- 호스트 이름 : localhost
- 포트 : Container Manager에서 설정했던 로컬 포트
6. 테스트
- 브라우저에서 컨테이너Registry주소/v2/_catalog 확인
- 접속 된다면 성공
마무리
이렇게 Synology NAS에 Docker Private Registry 설정부터 도메인 연결까지 하는 방법을 기록해보았습니다.만약 안되시거나 잘 모르겠는 부분이 있다면 댓글 남겨주시면 최대한 답변 해드리겠습니다.
추후에 모든 기술 블로그는 jaehai.com/post에 업로드 될 예정입니다.
제 글이 도움이 되셨다면 ops-jaeha Github 팔로우 부탁드리겠습니다!
ops-jaeha - Overview