게으름을 위한 부지런한 게으름뱅리' 블로그

[Nexus] 여러 docker proxy repository를 group화 하기 본문

IT/Service

[Nexus] 여러 docker proxy repository를 group화 하기

LazismLee 2024. 7. 15. 20:36
반응형

Sonatype Nexus Repository Manager에서는 여러 Docker Proxy 리포지토리를 생성하고 이를 그룹화하여 하나의 엔드포인트로 사용할 수 있습니다. 이 기능을 활용하면 여러 Docker Proxy 리포지토리를 통합하여 하나의 그룹 리포지토리에서 접근할 수 있게 됩니다. 다음은 Sonatype Nexus에서 Docker Proxy 리포지토리를 여러 개 설정하고 이를 그룹화하는 방법을 단계별로 설명합니다.

1. 여러 Docker Proxy 리포지토리 설정

1.1. Docker Proxy Repository 생성

  1. Nexus 웹 UI에서 ‘Repositories’로 이동합니다.
  2. ‘Create repository’를 클릭합니다.
  3. ‘Docker (proxy)’를 선택합니다.
  4. Proxy Repository 설정을 입력합니다:
    • Name: docker-proxy-hub (예: Docker Hub를 위한 Proxy)
    • Remote Storage Location: https://registry-1.docker.io (Docker Hub의 주소)
    • HTTP Port: 5001 (또는 원하는 포트 번호)
    • Version: v2
    • Save를 클릭하여 저장합니다.
  5. 추가로 다른 Docker Proxy 리포지토리도 생성합니다.
    • Name: docker-proxy-private (사설 레지스트리의 Proxy)
    • Remote Storage Location: https://some-private-registry.com
    • HTTP Port: 5002
    • Version: v2
    • Save를 클릭하여 저장합니다.

예를 들어, https://some-private-registry.com을 사용하는 Proxy 리포지토리를 추가할 수 있습니다.

 

2. Docker Proxy 리포지토리 그룹화

여러 개의 Docker Proxy 리포지토리를 그룹화하여 하나의 그룹 리포지토리에서 사용할 수 있습니다. 이 방법을 통해 여러 Proxy 리포지토리에서 이미지를 통합적으로 관리할 수 있습니다.

2.1. Docker Group Repository 생성

  1. Nexus 웹 UI에서 ‘Repositories’로 이동합니다.
  2. ‘Create repository’를 클릭합니다.
  3. ‘Docker (group)’를 선택합니다.
  4. Group Repository 설정을 입력합니다:
    • Name: docker-group (이름은 자유롭게 설정할 수 있습니다.)
    • HTTP Port: 5003 (또는 원하는 포트 번호)
    • Version: v2
    • Member Repositories: docker-proxy-hub, docker-proxy-private (앞서 생성한 Proxy 리포지토리들을 추가합니다.)
    • Save를 클릭하여 저장합니다.

2.2. Docker Group Repository 활용

docker-group 리포지토리를 통해 모든 Proxy 리포지토리에 접근할 수 있습니다.

docker pull localhost:5003/library/ubuntu:latest
docker pull localhost:5003/myapp:latest

2.3. Group Repository의 동작 방식

  • 첫 번째 요청: docker-group 리포지토리로 요청하면, Nexus는 리포지토리 목록에서 순서대로 검색을 진행합니다.
  • 캐시 저장: 요청된 이미지는 가장 먼저 찾은 리포지토리에서 캐시됩니다.
  • 이미지 확인: 요청된 이미지가 존재하지 않으면, docker-proxy-hub → docker-proxy-private 순서로 검색합니다.

3. Group Repository의 우선순위 설정

리포지토리의 우선순위를 설정하여 검색 순서를 변경할 수 있습니다. Nexus의 그룹 리포지토리 설정에서 우선순위를 조정하여 다음과 같이 설정할 수 있습니다:

  1. Nexus 웹 UI에서 ‘Repositories’로 이동합니다.
  2. ‘docker-group’를 클릭하여 그룹 리포지토리 설정 페이지로 이동합니다.
  3. ‘Reorder’ 버튼을 클릭하여 리포지토리의 순서를 조정합니다.
  4. 여기서 docker-proxy-hub를 docker-proxy-private보다 앞에 배치하여 Docker Hub를 먼저 검색하도록 할 수 있습니다.

4. Docker Group Repository의 설정 검증

4.1. 설정 검증

Group Repository의 설정이 완료되면, Docker 클라이언트를 사용하여 다음과 같은 명령어로 이미지를 가져와 테스트할 수 있습니다.

docker pull localhost:5003/library/ubuntu:latest
docker pull localhost:5003/myapp:latest

4.2. 이미지 확인

Nexus 웹 UI에서 ‘Browse’ 탭으로 이동한 후 ‘docker-group’ 리포지토리를 클릭하여 이미지 목록을 확인할 수 있습니다.

4.3. 문제 해결

  • 404 오류: 해당 이미지가 존재하지 않는 경우입니다. Nexus의 로그를 확인하여 문제를 진단합니다.
  • 401 오류: 인증 문제가 발생할 수 있습니다. Docker 클라이언트에서 docker login 명령어로 다시 로그인합니다.

5. 고급 설정 및 추가 자료

5.1. Docker Repository 리포지토리 복제

여러 환경에서 동일한 설정을 사용해야 하는 경우, 기존 리포지토리를 복제하여 새로운 리포지토리를 만들 수 있습니다.

5.2. 추가 자료

요약

Sonatype Nexus에서 여러 Docker Proxy 리포지토리를 생성하고 이를 Group Repository로 통합하는 과정은 다음과 같습니다.

  1. Docker Proxy Repository 여러 개 생성 (예: Docker Hub, 사설 레지스트리 등)
  2. Docker Group Repository 생성하여 Proxy 리포지토리들을 통합
  3. Group Repository를 통해 모든 Proxy 리포지토리에 접근할 수 있음
  4. 우선순위를 설정하여 검색 순서를 조정
  5. 테스트 및 검증을 통해 설정이 제대로 되었는지 확인
반응형
Comments