💡컨테이너 레지스트리란?
- 컨테이너 이미지를 저장하고 관리하는 공간이다
- 도커 이미지를 만들면, 그 이미지를 어디엔가 저장해두고, 필요할 때 꺼내서 실행해야 한다
- 그 저장소가 바로 컨테이너 레지스트리(Container Registry) 이다
- 도커 이미지가 없으면 컨테이너를 실행할 수 없다
- 다음과 같은 작업이 필요하다
- 이미지를 만든다 (docker build)
- 어딘가에 저장한다 (docker push)
- 저장된 이미지를 다른 서버나 클러스터에서 가져온다 (docker pull)
- 이 모든 흐름의 중심이 되는 것이 레지스트리이다
| 퍼블릭 vs 프라이빗 레지스트리
설명 | 대표 서비스 | |
퍼블릭 레지스트리 | 누구나 접근 가능, 검색 가능 | Docker Hub |
프라이빗 레지스트리 | 소유자 또는 허용된 사용자만 접근 가능 | AWS ECR, GCP Artifact Registry, GitHub Container Registry 등 |
- 보안상 이유로 실제 서비스 배포 시에는 프라이빗 레지스트리를 사용하는 것이 일반적이다
| 클라우드별 컨테이너 레지스트리
클라우드 | 서비스 이름 | 특징 |
AWS | ECR (Elastic Container Registry) | IAM으로 접근 제어 |
GCP | Artifact Registry | 여러 언어 패키지 + 컨테이너 이미지 지원 |
Azure | ACR (Azure Container Registry) | Azure Active Directory 통합 |
GitHub | GitHub Container Registry (ghcr.io) | 오픈소스/프라이빗 모두 지원 |
💡 Artifact Registry란?
- Artifact Registry는 Google Cloud에서 제공하는 컨테이너 이미지, 패키지 등을 저장하고 관리하는 중앙 저장소다.
- 기존의 Container Registry(GCR)를 대체하는 서비스로, 더 정교한 권한 관리, 리전 설정, 리포지토리 단위 관리가 가능하다.
Artifact Registry의 특징
- Docker, Maven, npm, Python 등 다양한 형식 지원
- IAM 기반 세분화된 권한 제어 가능
- Private 또는 Public 저장소 운영 가능
- VPC 네트워크 및 Cloud Build, GKE와 통합 용이
🔶 GCP Artifact Registry 사용해보기
1. Artifact Registry 저장소 만들기
2. gcloud auth configure-docker 명령으로 로컬 Docker와 인증 연결
3. docker build -t [이미지주소] . 로 이미지 생성
4. docker push [이미지주소] 로 업로드 클러스터에서 이미지 주소로 pull 받아 사용
(⚠️ GCP에서 GKE 클러스터 만들기 ⬇️)
2025.04.19 - [IT/Cloud & DevOps] - 클라우드 환경에서 쿠버네티스 클러스터 만들기
✅ GCP 콘솔에서 ‘Artifact Registry’를 검색해 아티팩트 레지스트리 서비스에 접속한다
✅ 화면 상단의 ‘저장소 만들기’ 버튼을 클릭해 저장소 생성 화면에 진입한다
✅ 저장소의 이름을 입력하고 형식은 ‘Docker’를 선택해준다
위치 유형은 ‘리전’을 선택 후 리전을 ‘asia-northeast-3’로 선택한다
나머지 설정은 그대로 두고, ‘만들기’ 버튼을 클릭해 저장소 생성을 완료한다
✅ 만들어진 저장소의 상세 화면에 진입한 후, 화면 상단의 ‘설정 안내’ 버튼을 클릭한다
✅ 내 컴퓨터의 Docker와 Artifact Registry를 연결하기 위한 CLI 명령어를 복사해 터미널에 입력해 준다
- Docker와 Artifact Registry 연결 (권한 및 인증)
- Windows에서 CMD를 통해 해당 명령어를 입력하는 경우
- `\` 를 제거하고 모두 한줄로 입력하거나,
- `\` 대신 `^` 기호를 입력한다
- CLI 환경에서 `\` 은 일반적으로 하나의 명령어를 여러 줄에 걸쳐 입력하는 경우 사용하는 기호인데, CMD는 `\` 기호 대신 `^` 기호를 사용하도록 하고 있다
✅ 저장소 상세 화면의 경로 부분 옆에 있는 복사 버튼을 클릭해 해당 저장소의 주소를 복사한다
✅ `<저장소 주소>/<이미지명>:<버전>` 형식으로 이미지를 만들어 잘 push 되는지 확인한다
- GCP의 Artifact Registry의 저장소는 AWS의 ECR 리포지토리와 다르게 이미지 단위로 만드는 것이 아닌,
아예 다양한 이미지를 자유롭게 저장할 수 있는 공간이 만들어지게 된다
- 만든 저장소의 주소가 `docker.pkg.dev/study-project/kube-study-registry` 라면,
이미지의 이름은 `docker.pkg.dev/study-project/kube-study-registry/hello-docker:1.0.0` 과 같은 형식으로 구성되어야 한다
| 로컬에서 이미지 빌드
docker build -t `저장소 주소`/`이미지명`:`버전` .
예) docker build -t asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/kube-study-registry/hello-docker:1.0.0 .
naming to asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/kube-study-registry/hello-docker:1.0.0
=> 이 메시지가 나왔다는 건,
- hello-docker:1.0.0 이미지를 네임태그로 잘 만들었다는 뜻
- Dockerfile과 demo.jar도 문제 없이 잘 인식되었고, 캐시도 활용되었다.
| 이미지 푸시
docker push `저장소 주소`/`이미지 이름`:`버전`
=> 이 주소에 이미지가 업로드되었고, Kubernetes에서 사용 가능한 상태
=> 이미지를 Artifact Registry에 푸시했다
| 이미지 전체 경로 예시 설명
asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/kube-study-registry/hello-docker:1.0.0
레지스트리 | asia-northeast3-docker.pkg.dev | 이미지가 저장되는 중앙 저장소 서비스 주소 (DockerHub, GCR 등) |
프로젝트 / 레포지토리 |
rare-shadow-457105-s7/kube-study-registry | GCP 프로젝트 내의 저장소 경로 |
이미지 이름 | hello-docker | 실제 애플리케이션 이미지의 이름 |
태그 | 1.0.0 | 버전 또는 특정 상태 (latest, dev, 1.0.0 등) |
| 이미지 확인
docker images
| 실행해보기
docker pull asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/kube-study-registry/hello-docker:1.0.0
docker run -p `호스트포트 : 컨테이너포트` asia-northeast3-docker.pkg.dev/rare-shadow-457105-s7/kube-study-registry/hello-docker:1.0.0
localhost:`호스트포트` 접속해서 나오는지 확인!
👉🏼👉🏼👉🏼
- 컨테이너 레지스트리는 이미지를 저장하고 배포할 수 있는 저장소이다
- DockerHub는 가장 널리 쓰이는 퍼블릭 레지스트리이다
- 보안을 위해 클라우드 프라이빗 레지스트리를 사용하는 것이 일반적이다
- GCP에서는 Artifact Registry를 사용하면 Kubernetes, Cloud Run 등과 연동하기 쉽다
'IT > Cloud & DevOps' 카테고리의 다른 글
ReplicaSet : 정해진 수의 Pod을 유지시켜주는 관리자 (0) | 2025.04.21 |
---|---|
Pod : 쿠버네티스에서 컨테이너 실행하는 방법 (0) | 2025.04.21 |
클라우드 환경에서 쿠버네티스 클러스터 만들기 (0) | 2025.04.19 |
도커 이미지 만들어 보기 (0) | 2025.04.19 |
도커 사용해보기 (0) | 2025.04.17 |