UnisquadsU
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

도커 레지스트리 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.23 10:14

도커 레지스트리

정의

도커 이미지를 관리하는 일종의 저장소

주요 용도

도커 이미지의 저장, 배포, 관리

대표 서비스

Docker Hub

클라우드 서비스

Amazon Elastic Container Registry (Amazon ECR)

Google Artifact Registry

Azure Container Registry

접근 방식

REST API

상세 정보

사설 레지스트리

도커 컨테이너로 실행 가능한 사설 저장소[?]

사용 시나리오

내부에서 만든 이미지를 사내에서만 사용하고자 할 때

1. 개요

도커 레지스트리는 도커 이미지를 저장하고 배포하며 관리하는 일종의 저장소 서버이다. 이는 소프트웨어 개발 과정에서 생성된 컨테이너 이미지를 중앙에서 관리하고, 팀 또는 조직 내에서 쉽게 공유하고 배포할 수 있도록 하는 핵심 인프라 구성 요소이다. 주요 용도는 도커 이미지의 저장, 배포, 관리를 포함한다.

가장 잘 알려진 공개 레지스트리 서비스는 Docker Hub이다. 그러나 보안, 규정 준수, 또는 네트워크 성능 등의 이유로 많은 기업들은 자체적인 사설 레지스트리를 구축하여 운영한다. 또한 주요 클라우드 컴퓨팅 제공자들은 통합된 컨테이너 오케스트레이션 서비스와 연동되는 관리형 레지스트리 서비스를 제공하며, 대표적으로 Amazon Elastic Container Registry(Amazon ECR), Google Artifact Registry, Azure Container Registry 등이 있다.

도커 레지스트리는 표준화된 REST API를 통해 접근 및 관리된다. 이를 통해 사용자는 docker push, docker pull 같은 도커 엔진 명령어를 사용하여 이미지를 등록하거나 가져올 수 있으며, 다양한 자동화 도구와 CI/CD 파이프라인과도 쉽게 통합될 수 있다.

2. 기본 개념

2.1. 도커 레지스트리의 정의

도커 레지스트리는 도커 이미지를 저장하고 배포하며 관리하는 일종의 저장소 서버이다. 이는 애플리케이션과 그 실행 환경을 패키징한 도커 이미지를 중앙에서 관리할 수 있게 해주는 핵심 인프라 구성 요소이다. 사용자는 레지스트리에서 이미지를 내려받아(pull) 컨테이너를 실행하거나, 자신이 빌드한 이미지를 레지스트리에 등록(push)하여 팀 내부나 외부와 공유할 수 있다.

가장 대표적인 공개 레지스트리 서비스는 Docker Hub이다. Docker Hub는 공개 이미지의 저장 및 검색이 가능한 기본 레지스트리로, 많은 공식 이미지들이 호스팅된다. 그러나 기업이나 조직은 보안, 규정 준수, 네트워크 성능, 또는 독자적인 CI/CD 파이프라인 통합을 위해 자체적인 사설 레지스트리를 운영하는 경우가 많다. 사설 레지스트리는 도커 공식 registry 이미지를 사용하여 쉽게 구축할 수 있다.

주요 클라우드 제공자들도 관리형 컨테이너 레지스트리 서비스를 제공하고 있다. 예를 들어, AWS는 Amazon Elastic Container Registry(ECR)를, GCP는 Google Artifact Registry를, Azure는 Azure Container Registry를 서비스한다. 이러한 관리형 서비스는 인증, 접근 제어, 고가용성, 그리고 클라우드 네이티브 도구들과의 긴밀한 통합을 제공한다. 도커 레지스트리는 표준화된 REST API를 통해 이미지 업로드, 다운로드, 삭제 등의 작업을 처리한다.

2.2. 도커 허브와의 관계

도커 허브는 도커 레지스트리 중 가장 대표적인 공개 서비스이다. 사용자는 도커 허브를 통해 공식 이미지나 커뮤니티에서 공유하는 수많은 도커 이미지를 쉽게 찾아내고 다운로드할 수 있다. 이는 오픈 소스 프로젝트나 개인 학습에 매우 유용한 환경을 제공한다.

그러나 기업 환경에서는 보안, 비용, CI/CD 파이프라인 통합 등의 이유로 도커 허브와 같은 공개 레지스트리만으로는 부족한 경우가 많다. 소스 코드나 설정 파일이 포함된 내부 애플리케이션 이미지를 공개적으로 업로드하는 것은 보안상 위험하며, 프라이빗 리포지토리를 무제한 사용하려면 유료 플랜이 필요하다. 또한, 빌드에서 배포까지의 자동화된 흐름을 구축할 때 클라우드 제공업체의 레지스트리 서비스는 해당 클라우드의 IAM 및 배포 도구와 원활하게 연동되는 장점이 있다.

따라서 도커 허브는 공개 이미지의 중심 허브 역할을 하며, 사설 레지스트리나 Amazon ECR, Google Artifact Registry, Azure Container Registry 같은 클라우드 서비스는 보안과 자동화가 요구되는 기업 환경에서 도커 허브를 보완하는 역할을 한다. 사용자는 필요에 따라 이들 레지스트리를 혼합하여 사용할 수 있다.

3. 사설 레지스트리

3.1. 사설 레지스트리의 필요성

사설 레지스트리는 조직 내부에서 자체적으로 운영하는 도커 레지스트리 서버이다. 도커 허브와 같은 공개 레지스트리를 사용하는 대신 사설 레지스트리를 구축하는 주된 이유는 보안과 제어의 필요성에서 비롯된다.

첫째, 보안 요구사항이다. 기업이나 조직에서 개발한 애플리케이션 이미지는 내부 소스 코드, 환경 설정, 인증서 등 민감한 정보를 포함할 수 있다. 이러한 이미지를 공개 레지스트리에 업로드하는 것은 보안상 위험할 수 있다. 사설 레지스트리를 사용하면 네트워크를 외부에 노출시키지 않고 내부망에서만 이미지의 저장과 배포를 완전히 통제할 수 있다. 접근 권한을 특정 사용자나 시스템으로 제한할 수 있어 정보 보안 정책을 준수하는 데 유리하다.

둘째, 독립성과 성능 향상이다. 공용 레지스트리에 의존하지 않으므로 외부 서비스의 장애나 네트워크 지연의 영향을 받지 않는다. 특히 대규모로 이미지를 빌드하고 배포하는 CI/CD 파이프라인에서는 내부 네트워크에 위치한 사설 레지스트리를 통해 빠르고 안정적으로 이미지를 전송할 수 있어 개발 및 배포 속도를 높일 수 있다. 또한, 공개 레지스트리의 저장 공간 제한이나 비용 문제를 우회할 수 있다.

마지막으로, 맞춤형 관리와 통합의 이점이 있다. 조직의 정책에 맞게 인증 방식을 설정하거나, 저장소 백업 전략을 수립하고, 모니터링 및 감사 로그를 자체적으로 관리할 수 있다. 아마존 ECR, 구글 아티팩트 레지스트리, 애저 컨테이너 레지스트리 같은 클라우드 서비스의 사설 레지스트리를 이용하면 해당 클라우드 인프라와의 긴밀한 통합 및 관리의 편의성을 누릴 수 있다.

3.2. 도커 레지스트리 이미지 실행

도커 레지스트리 이미지를 실행하는 것은 사설 레지스트리 서버를 구축하는 핵심 단계이다. 공식 도커 허브에서 제공하는 registry 이미지를 사용하여 로컬 환경에 사설 도커 레지스트리 서버 컨테이너를 쉽게 실행할 수 있다. 기본적인 실행 명령어는 docker run -d -p 5000:5000 --restart always --name registry registry:2이다. 이 명령은 registry:2 이미지를 기반으로 백그라운드에서 컨테이너를 실행하며, 호스트의 5000번 포트를 컨테이너의 5000번 포트에 매핑하고, 컨테이너 이름을 'registry'로 지정한다. --restart always 옵션은 도커 데몬이 재시작될 때 컨테이너도 자동으로 재시작되도록 보장한다.

기본적으로 실행된 레지스트리는 HTTP 프로토콜을 사용한다. 그러나 최신 도커 엔진은 보안상의 이유로 비보안(HTTP) 레지스트리에 대한 접근을 기본적으로 차단한다. 따라서 로컬에서 실행한 레지스트리(localhost:5000)에 이미지를 푸시하거나 풀하려면 도커 데몬 설정 파일(daemon.json)에 해당 주소를 insecure-registries 목록에 추가해야 한다. 설정 후에는 도커 서비스를 재시작하여 변경 사항을 적용해야 한다. 이 단계를 거치면 localhost:5000 주소를 통해 REST API 기반의 사설 레지스트리에 접근할 수 있게 된다.

보다 강화된 보안이 필요한 경우, SSL/TLS 인증서를 구성하여 HTTPS를 통해 레지스트리를 실행할 수 있다. 또한, htpasswd를 이용한 기본 인증을 설정하여 허가된 사용자만 레지스트리에 접근하도록 제한할 수 있다. 실행된 레지스트리 컨테이너는 지정된 포트(예: 5000)를 통해 이미지의 푸시, 풀, 삭제 등의 작업을 처리하며, 내부 저장소는 기본적으로 컨테이너 내부의 /var/lib/registry 경로에 데이터를 저장한다. 이 데이터를 영구적으로 보존하려면 호스트의 디렉토리나 도커 볼륨을 해당 경로에 마운트하는 것이 필수적이다.

4. 레지스트리 사용 방법

4.1. 이미지 등록(Push)

이미지 등록은 로컬에 빌드된 도커 이미지를 도커 레지스트리 서버에 업로드하는 과정이다. 이 작업은 docker push 명령어를 통해 수행되며, 이미지를 공유하거나 중앙에서 관리하기 위한 필수 단계이다.

이미지를 푸시하기 전에는 반드시 이미지의 이름(태그)을 레지스트리 주소를 포함하도록 지정해야 한다. 예를 들어, 사설 레지스트리의 주소가 myregistry.com:5000이라면, docker tag my-image:latest myregistry.com:5000/my-image:latest 명령어로 태그를 생성한 후 docker push myregistry.com:5000/my-image:latest 명령어로 푸시할 수 있다. Docker Hub와 같은 공개 레지스트리를 사용할 때는 사용자 계정명을 포함한 형식(예: username/image-name:tag)으로 태그를 지정한다.

이미지 푸시 과정에서는 레이어 기반의 효율적인 전송이 이루어진다. 레지스트리 서버에 이미 동일한 컨텐츠 디제스트를 가진 레이어가 존재하면 해당 레이어는 다시 전송되지 않아 네트워크 대역폭과 시간을 절약할 수 있다. 푸시가 성공하면 터미널에 이미지의 다이제스트가 출력된다. 많은 클라우드 레지스트리 서비스나 보안이 강화된 사설 레지스트리의 경우, 푸시 명령어 실행 전에 docker login 명령어를 사용한 인증이 선행되어야 한다.

4.2. 이미지 삭제

도커 레지스트리에서 이미지를 삭제하는 작업은 단순히 docker rmi 명령어를 사용하는 것과는 다르다. 레지스트리 서버에 저장된 이미지를 완전히 제거하려면 REST API를 통해 두 단계의 과정을 거쳐야 한다. 첫 번째 단계는 이미지의 특정 태그를 삭제하는 것이고, 두 번째 단계는 더 이상 참조되지 않는 이미지 레이어 데이터를 정리하는 것이다.

이미지 태그를 삭제하기 위해서는 먼저 해당 태그의 매니페스트 해시값(Digest)을 조회해야 한다. 이는 curl 명령어와 Accept 헤더를 사용하여 수행할 수 있다. 얻은 해시값을 사용하여 DELETE 요청을 보내면 해당 태그가 레지스트리에서 제거된다. 그러나 이 작업만으로는 실제 이미지 레이어 데이터가 삭제되지 않는다. 모든 태그가 삭제된 이미지는 여전히 레지스트리 저장소 목록에 남아 있을 수 있다.

실제 디스크 공간을 확보하려면 가비지 컬렉션을 실행해야 한다. 이는 docker exec 명령어를 사용하여 실행 중인 레지스트리 컨테이너 내부에서 garbage-collect 명령을 수행함으로써 이뤄진다. 이 과정을 통해 어떤 태그에도 참조되지 않는 이미지 레이어와 매니페스트 데이터가 물리적으로 제거된다. Amazon ECR이나 Google Artifact Registry와 같은 관리형 클라우드 레지스트리 서비스에서는 이 과정이 자동화되어 있거나, 서비스별 고유의 관리 콘솔 및 API를 통해 삭제를 처리한다.

4.3. 인증 및 보안

도커 레지스트리의 인증 및 보안은 이미지 저장소에 대한 접근을 제어하고 데이터 무결성을 보장하는 핵심 기능이다. 기본적으로 도커 레지스트리는 REST API를 통해 통신하며, 이를 안전하게 사용하기 위한 여러 메커니즘이 존재한다.

인증 방식으로는 기본적인 HTTP Basic 인증이 널리 사용된다. 이를 위해 htpasswd 도구를 이용해 사용자명과 비밀번호를 생성하고, 레지스트리 컨테이너 실행 시 해당 파일의 경로를 환경 변수로 지정한다. 이렇게 설정하면 이미지를 push하거나 pull할 때 사용자 인증이 요구된다. 더 강화된 보안을 위해 JSON Web Token 기반의 토큰 인증을 구성할 수도 있으며, 클라우드 서비스의 IAM과 연동하는 경우도 많다.

보안 강화를 위해 SSL/TLS를 통한 암호화 통신은 필수적이다. 공식 도커 엔진은 기본적으로 안전하지 않은(HTTP) 레지스트리 접근을 차단한다. 사설 레지스트리에 HTTPS를 적용하려면 공인 인증서를 사용하거나, 테스트 목적으로 자체 서명된(self-signed) 인증서를 생성한 후 도커 데몬의 설정 파일(daemon.json)에 insecure-registries 목록을 추가해야 한다. Amazon ECR이나 Google Artifact Registry 같은 관리형 서비스는 인증서 관리와 엔드투엔드 암호화를 자체적으로 제공한다.

이미지 무결성 보장을 위해 도커는 콘텐츠 신뢰 기능을 제공한다. 이는 디지털 서명을 통해 이미지의 출처와 변조 여부를 검증하는 시스템으로, 공급자와 소비자 모두에게 높은 수준의 보안을 부여한다. 또한, 레지스트리 운영 시 저장된 이미지에 대한 정기적인 보안 취약점 스캔을 수행하고, 불필요한 이미지 레이어를 정리하는 가비지 컬렉션을 실행하는 것이 좋은 보안 관행에 속한다.

5. 클라우드 레지스트리 서비스

5.1. Amazon ECR

Amazon ECR은 아마존 웹 서비스가 제공하는 완전관리형 도커 레지스트리 서비스이다. 도커 이미지를 안전하게 저장, 관리, 배포할 수 있도록 설계되었으며, AWS의 다른 서비스들과 긴밀하게 통합되어 있다.

이 서비스는 AWS Identity and Access Management를 통해 세밀한 접근 제어를 제공하며, 저장된 이미지는 자동으로 암호화된다. Amazon Elastic Container Service나 Amazon Elastic Kubernetes Service와 같은 AWS의 컨테이너 오케스트레이션 서비스와 연동하여 CI/CD 파이프라인을 구축하는 데 널리 사용된다.

사용자는 AWS CLI나 도커 CLI를 통해 이미지를 ECR에 푸시하거나 풀할 수 있다. 인증을 위해 AWS가 발급하는 임시 토큰을 사용하며, 이를 통해 도커 클라이언트가 레지스트리에 안전하게 접근할 수 있다. ECR은 이미지 스캔 기능을 통해 취약점을 탐지하고, 수명 주기 정책을 설정하여 사용되지 않는 이미지를 자동으로 정리할 수 있다.

5.2. Google Artifact Registry

Google Artifact Registry는 구글 클라우드 플랫폼(GCP)에서 제공하는 완전 관리형 도커 레지스트리 서비스이다. Amazon ECR 및 Azure Container Registry와 유사하게, 도커 이미지를 비롯한 다양한 아티팩트를 안전하게 저장, 관리, 배포할 수 있는 플랫폼을 제공한다. 이 서비스는 GCP의 컨테이너 생태계, 특히 Google Kubernetes Engine(GKE)과의 긴밀한 통합을 통해 CI/CD 파이프라인을 간소화하는 데 중점을 둔다.

주요 기능으로는 다중 리전 및 다중 지역 지원을 통한 낮은 지연 시간 접근, IAM(Identity and Access Management)을 활용한 세분화된 접근 제어, 그리고 취약점 스캔 기능이 포함된다. 또한 VPC 서비스 제어를 통한 네트워크 격리와 고객 관리 암호화 키(CMEK)를 사용한 데이터 암호화를 지원하여 높은 수준의 보안과 규정 준수 요구사항을 충족시킨다. Google Artifact Registry는 도커 허브와 같은 공용 레지스트리와 달리, 조직 내에서 프라이빗하게 이미지를 관리해야 하는 요구에 적합한 서비스이다.

5.3. Azure Container Registry

Azure Container Registry는 마이크로소프트의 클라우드 컴퓨팅 플랫폼인 Microsoft Azure에서 제공하는 관리형 도커 레지스트리 서비스이다. 이 서비스는 도커 이미지와 OCI (Open Container Initiative) 호환 컨테이너 아티팩트를 위한 프라이빗 저장소를 제공하여, 애플리케이션 개발과 배포 과정에서 이미지의 저장, 관리, 배포를 간소화한다.

Azure Container Registry는 다른 Azure 서비스와의 긴밀한 통합이 주요 특징이다. 예를 들어, Azure Kubernetes Service나 Azure App Service와 같은 서비스에서 직접 레지스트리의 이미지를 가져와 컨테이너를 배포할 수 있으며, Azure Active Directory를 통한 인증과 권한 부여를 지원하여 보안을 강화한다. 또한, 지리적 복제 기능을 통해 전 세계 여러 Azure 지역에 레지스트리를 복제하여 이미지 가용성과 성능을 향상시킬 수 있다.

서비스는 다양한 요구 사항에 맞춰 여러 서비스 계층을 제공한다. 기본 계층은 개발 및 테스트 환경에 적합한 비용 효율적인 옵션이며, 표준 및 프리미엄 계층은 더 높은 저장 용량과 처리량, 그리고 고급 기능을 제공한다. 이러한 기능에는 웹훅, 이미지 서명을 위한 콘텐츠 신뢰, 취약점 스캐닝을 위한 Azure Security Center와의 통합 등이 포함된다.

6. 관련 문서

  • 모띠의 아티팩토리 - 도커 레지스트리(Docker registry) 등록 및 삭제

  • Velog - Docker & Kubernetes 6. 도커 레지스트리

  • seungyeonpark.github.io - Docker Registry

  • jaehyojjang.dev - Docker Registry

  • cloudwithbass - 도커 레지스트리(Docker Registry)란?

  • 44Bits - 도커 레지스트리 구동 및 S3 스토리지 사용하기

7. 참고 자료

  • motti.tistory.com

  • velog.io

  • seungyeonpark.github.io

  • jaehyojjang.dev

  • cloudwithbass.tistory.com

  • 44bits.io

리비전 정보

버전r1
수정일2026.02.23 10:14
편집자unisquads
편집 요약AI 자동 생성