앞선 Git 서버 설치하기 글과 이어지는 글입니다.
Git 서버는 Gitea를 통해 잘 설치했고, 이번에는 라즈베리파이 3B에 Docker Registry 서버 설치입니다. 순서 상으로는 Gitea를 나중에 설치 했고, Docker Registry 서버를 먼저 설치했지만, 내용 정리는 이제서야 하게 됐습니다.
Harbor
Registry 서버로 뭘 설치해야할까 검색을 좀 해 보니 Open Source로 Harbor라는게 보여서 처음에는 이 걸 설치해 보려고 진행을 했습니다. 가이드에 따라서 한 참을 진행하고 있었는데, '앗! 이런' Harbor가 arm64 아키텍처를 지원하고 있지 않는 겁니다. ㅠㅠ
https://github.com/goharbor/harbor-arm
이런 별도의 프로젝트로 ARM쪽을 진행 중인가 본데 완결이 안 된 건지 시키는대로 빌드를 해 봤지만 잘 안 되더군요. 더 해 볼 여지는 있었지만 이렇게 목숨 걸고 할 필요는 없어서 Harbor는 여기에서 포기했습니다.
CNCF Registry
조금 더 검색을 해 보니 CNCF(Cloud Native Computing Foundation)에서 Registry 서버를 그것도 Docker image로 배포하고 있다는 것을 알게됐습니다. 웹 UI가 없기는 하지만 저한테는 단순히 Docker Image push 잘 받아주고 pull 만 잘 되면 됐기 때문에 이걸로 설치하기로 결정했습니다.
설치 과정
1. 필요한 디렉토리 생성
mkdir docker-registry
cd docker-registry
mkdir registry-data
mkdir auth
2. 계정 및 암호 설정
cd auth
htpasswd -Bc registry.password 계정이름
3. docker compose 파일 작성
cd ..
vi docker-compose.yml
docker-compose.yml 내용
→ 인증이 필요한 경우
version: '3'
services:
registry:
image: registry:latest
ports:
- "5000:5000"
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry-data
volumes:
- ./auth:/auth
- ./registry-data:/registry-data
→ 인증이 필요 없는 경우 (인증이 필요 없는 경우에는 auth 디렉토리 만드는 것과 2번 과정을 생략해도 됩니다)
version: '3'
services:
registry:
image: registry:latest
ports:
- "5000:5000"
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry-data
volumes:
- ./registry-data:/registry-data
4. 실행
docker compose up -d
5. 간단한 확인
브라우저에서 http://ip주소:5000/v2/_catalog 접속을 하여 응답을 하면 정상 동작하는 것입니다.
사용
해당 서버 주소 5000 번으로 일반적인 Registry 서버를 쓰듯이 사용하면 됩니다.
→ 예시
docker tag example:latest 서버아이피주소:5000/dream:latest
docker push 서버아이피주소:5000/dream:latest
API
웹 UI가 없어서 아쉽기는 하지만 RESTful API는 제공하고 있어서 필요한 경우 API 호출을 통해 이미지 삭제 등과 같은 다양한 작업을 할 수 있습니다. API 명세는 https://distribution.github.io/distribution/spec/api/ 에 자세히 나와 있습니다.
마무리
어차피 저 혼자 써서 그렇겠지만, 라즈베리파 3B 상에서도 무리 없이 잘 돌아갑니다. 이제 라즈베리파이 5로 배포할 때는 로컬에서 도커이미지를 만들고 3쪽으로 push 하고, 5에서 pull 해서 배포하고 있습니다. 요정도만 해 놔도 행복한(?) 배포 생활이 되더군요.
참고
'생활코딩' 카테고리의 다른 글
라즈베리파이 64비트 OS 설치 (0) | 2024.10.23 |
---|---|
라즈베리파이 - nginx - 특정 국가 접속 차단 (1) | 2024.10.22 |
라즈베리파이 - nginx - ModSecurity 설치 (3) | 2024.10.20 |
라즈베리파이 - Git 서버 설치하기 (Gitea) (2) | 2024.10.17 |
라즈베리파이 JDK 설치 (0) | 2024.10.14 |