현재는 Docker Image를 파일시스템에 보관중이지만, 커맨드로 간단하게 docker pull
할 수가 없어 Private Registry를 만들자고 다짐했습니다.
그리고 Synology NAS에서 사용중인 도커와 완전히 분리하는 식입니다.
(docker push
한다고 Synology Docker에 이미지로 추가되지 않음)
(도커 허브는 private 사용에 제약이 있습니다.)
시작하기전에
폴더 생성
저는 docker
라는 공유 폴더를 만든 다음, 해당 공유 폴더 안에 각각 registry/auth
, registry/data
를 만들어줬습니다.
역방향 프록시 설정
소스
프로토콜: HTTPS
호스트 이름: registry.domain.com
포트: 443
대상
프로토콜: HTTP
호스트이름: localhost
포트: 컨테이너에서 사용할 포트
역방향 프록시 설정 후, 제어판 → 보안 → 인증서에서 registry.domain.com
도 추가하여 갱신하고,설정에서 해당 서비스(registry.domain.com
)의 인증서를 갱신한 인증서로 바꿔주세요.
(기본으로 설정된 인증서라면 할 필요 없습니다.)
도메인 설정
도메인을 구매한 업체 홈페이지로 가서, DNS 설정에서 A레코드로 나스 외부 아이피, 그리고 registry.domain.com
으로 추가하고 등록해줍시다.
SSH 접속
ssh -p port user@url
Registry 컨테이너 생성
컨테이너를 만듭시다.
sudo docker run -d \
--name [컨테이너 이름] \
--restart always \
--publish [포트]:5000 \
--volume /volume1/docker/registry/auth:/auth \
--volume /volume1/docker/registry/data:/var/lib/registry \
-e REGISTRY_STORAGE_DELETE_ENABLED=TRUE \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
-e REGISTRY_AUTH=htpasswd \
registry:2.7.1
유저 생성
docker run --rm -ti xmartlabs/htpasswd [아이디] [비밀번호] > /volume1/docker/registry/auth/htpasswd
/volume1/docker/registry/auth/htpasswd
파일에 계정 정보가 있습니다.
확인
curl -X GET https://[아이디]:[비밀번호]@[URL]/v2/_catalog
저장소가 비어 있으므로 아래와 같이 출력돼야 합니다.
{"repositories":[]}
댓글