Docker Image를 Build한 이후 실제 서버 환경에서 사용하려면 Image를 저장하고 관리할 공간이 필요합니다.
이 역할을 하는 것이 Docker Registry입니다.
Registry는 Docker Image를 저장하고 배포하는 저장소입니다.
대표적인 Registry:
- Docker Hub
- GitHub Container Registry
- Amazon ECR
- Google Artifact Registry
- Harbor
- Private Docker Registry
기본 흐름:
Dockerfile
↓
Docker Buildx Bake
↓
Docker Image 생성
↓
Registry Push
↓
서버 Pull
↓
Container 실행
Docker Buildx Bake에서는 Registry 설정을 통해 Build한 Image를 자동으로 저장하고 관리할 수 있습니다.
예:
docker-bake.hcl
target "production" {
tags = [
"registry.company.com/app:v1"
]
}
실행:
docker buildx bake production --push
결과:
Image Build
↓
Registry 저장
↓
배포 가능한 Image 생성
이번 글에서는 Docker Buildx Bake Registry의 개념부터 Docker Hub, Private Registry, Image Tag 관리, Push 자동화, Production 운영 방법까지 자세히 알아보겠습니다.
Docker Buildx Bake Registry란 무엇인가?
Docker Registry는 Docker Image를 저장하는 서버입니다.
구조:
Developer
↓
Docker Buildx Bake
↓
Docker Image
↓
Container Registry
↓
Server Deployment
Registry에는 다음 정보가 저장됩니다.
- Image Layer
- Tag
- Manifest
- Multi-platform 정보
- Attestation
- SBOM
Docker Buildx Bake Registry가 필요한 이유
Local 환경에서는 Image를 만들 수 있지만 다른 서버에서는 사용할 수 없습니다.
예:
개발 PC
↓
Image 생성
↓
Local 저장
문제:
운영 서버
↓
Image 없음
↓
실행 불가
Registry 사용:
Build 서버
↓
Push
↓
Registry 저장
↓
운영 서버 Pull
장점:
- 서버 간 Image 공유
- 배포 자동화
- 버전 관리
- 안정적인 운영
Docker Buildx Bake Registry 기본 설정
docker-bake.hcl:
target "app" {
tags = [
"docker.io/company/app:v1"
]
}
실행:
docker buildx bake app --push
동작:
Image 생성
↓
Docker Hub Push
Docker Buildx Bake Docker Hub 사용법
Docker Hub는 가장 많이 사용하는 Public Registry입니다.
로그인:
docker login
Bake 설정:
target "production" {
tags = [
"username/app:v1"
]
}
Push:
docker buildx bake production --push
결과:
Docker Hub
↓
username/app:v1 저장
Docker Buildx Bake Private Registry 사용법
기업 환경에서는 Private Registry를 많이 사용합니다.
예:
registry.company.com/app:v1
설정:
target "production" {
tags = [
"registry.company.com/app:v1"
]
}
로그인:
docker login registry.company.com
Push:
docker buildx bake production --push
결과:
Private Registry
↓
Image 저장
Docker Buildx Bake Image Tag 관리
Tag는 Image 버전을 관리하는 중요한 요소입니다.
예:
app:v1
app:v1.1
app:latest
권장 방식:
Production:
app:1.0.0
개발:
app:dev
예:
target "production" {
tags = [
"registry.company.com/app:1.0.0"
]
}
Docker Buildx Bake Registry와 Multi-platform Image
Multi-platform Image는 Registry 사용이 필수에 가깝습니다.
예:
target "production" {
platforms = [
"linux/amd64",
"linux/arm64"
]
tags = [
"registry.company.com/app:v1"
]
}
Push:
docker buildx bake production --push
결과:
Registry
app:v1
├── linux/amd64
└── linux/arm64
사용자는 동일한 Tag를 사용하지만 Docker가 환경에 맞는 Image를 선택합니다.
Docker Buildx Bake Registry와 Cache 활용
Registry는 Image뿐 아니라 Build Cache 저장에도 사용할 수 있습니다.
설정:
cache-to = [
"type=registry,ref=registry.company.com/app:cache"
]
cache-from = [
"type=registry,ref=registry.company.com/app:cache"
]
효과:
Registry Cache
↓
다음 Build 재사용
↓
Build 시간 감소
Docker Buildx Bake Registry와 CI/CD 자동화
실제 서버 운영에서는 CI/CD와 Registry를 함께 사용합니다.
구조:
Git Push
↓
CI 실행
↓
Docker Buildx Bake
↓
Registry Push
↓
Server Deploy
예:
- name: Build and Push
run: |
docker buildx bake production --push
자동 배포 환경을 구성할 수 있습니다.
Docker Buildx Bake Registry 실무 예제
프로젝트:
server-project/
├── Dockerfile
├── docker-bake.hcl
└── app/
docker-bake.hcl:
target "production" {
tags = [
"registry.company.com/server-api:v1.0.0"
]
platforms = [
"linux/amd64",
"linux/arm64"
]
output = [
"type=image,push=true"
]
}
실행:
docker buildx bake production
결과:
Image Build
↓
Multi-platform 생성
↓
Registry Push
↓
배포 준비 완료
Docker Buildx Bake Registry 확인 방법
Image 목록 확인:
docker images
Registry Image 확인:
docker buildx imagetools inspect image-name
확인 가능:
- Platform
- Digest
- Manifest
- Attestation
Docker Buildx Bake Registry 문제 해결
Push 권한 오류
확인:
docker login
확인:
- 계정 권한
- Repository 권한
- Token 설정
Image를 찾을 수 없는 경우
확인:
docker buildx imagetools inspect image-name
Tag 이름을 확인합니다.
Multi-platform Push 실패
확인:
- Builder 설정
- Registry 지원 여부
- Platform 설정
Docker Buildx Bake Registry 사용 시 주의사항
첫 번째는 Image Tag 규칙을 정해야 합니다.
두 번째는 Production에서는 Version Tag 사용을 권장합니다.
세 번째는 Registry 접근 권한을 안전하게 관리해야 합니다.
네 번째는 오래된 Image와 Tag 정리가 필요합니다.
Best Practice
Docker Buildx Bake Registry 활용 방법:
- Production Registry 운영
- Version Tag 관리
- Multi-platform Push
- Cache 공유
- CI/CD 연결
- Image 보안 관리
자주 묻는 질문
Docker Registry란 무엇인가요?
Docker Image를 저장하고 배포하는 저장소입니다.
Docker Hub와 Private Registry 차이는 무엇인가요?
Docker Hub는 공개 서비스이고 Private Registry는 기업 내부 관리용 저장소입니다.
Multi-platform Image는 어디에 저장하나요?
일반적으로 Registry에 Push하여 관리합니다.
CI/CD에서도 사용할 수 있나요?
가능합니다.
Build → Push → Deploy 자동화 구조를 만들 수 있습니다.
마무리
Docker Buildx Bake Registry는 Docker Image를 실제 서버 환경에서 운영하기 위한 핵심 구성 요소입니다.
Build한 Image를 Registry에 저장하면 여러 서버와 환경에서 동일한 Image를 사용할 수 있으며, CI/CD 자동 배포 구조도 쉽게 구축할 수 있습니다.
특히 Multi-platform Build, Kubernetes, Cloud 환경에서는 Registry 기반 Image 관리가 필수적인 운영 방식입니다.