이미지 관리와 접근
1️⃣ + 이미지 Push / Pull 실습 (docker login, docker tag, docker push)
Harbor에 이미지를 저장하고 가져오기 위해선 기본적인 Docker 명령어를 활용해야 합니다.
실제 사용 예제를 통해 Push/Pull 과정을 이해해 봅시다.
1. docker login
Harbor에 로그인하여 인증을 수행합니다.
docker login harbor.example.com
Username: admin
Password: ********
성공하면 다음 메시지가 표시됩니다:
Login Succeeded
2. docker tag
이미지를 Harbor의 레지스트리 경로에 맞게 태깅합니다.
docker tag nginx:latest harbor.example.com/my-project/nginx:latest
3. docker push
태그된 이미지를 Harbor로 Push합니다.
docker push harbor.example.com/my-project/nginx:latest
Harbor UI에서 이미지가 업로드된 것을 확인할 수 있습니다.
✅ Push/Pull 아키텍처 흐름
[개발자 로컬 PC]
↓ docker login
[Harbor 인증 서버]
↓
docker push/pull
↓
[Harbor Registry (S3, PV 등)]
2️⃣ + Harbor와 Docker, Podman 연동
Harbor는 Docker 외에도 Podman과의 연동도 가능합니다.
Podman은 Docker와 CLI 호환성을 갖춘 OCI 호환 컨테이너 런타임입니다.
1. Podman 로그인
podman login harbor.example.com
Username: admin
Password: ********
2. Podman으로 이미지 Push
podman tag myapp:v1 harbor.example.com/my-project/myapp:v1
podman push harbor.example.com/my-project/myapp:v1
✅ Docker vs Podman 비교
항목 | Docker | Podman |
---|---|---|
데몬 방식 | 데몬 기반 (dockerd) | 데몬리스 (무데몬) |
시스템 요구 | 백그라운드 서비스 필요 | 단일 프로세스 실행 가능 |
호환성 | 표준 | OCI 호환 |
3️⃣ + Repository와 Tag 구조 이해
Harbor의 저장소 구조는 다음과 같습니다:
<Harbor_URL>/<Project_Name>/<Repository_Name>:<Tag>
예시:
harbor.example.com/my-project/backend-app:1.0.0
1. Repository와 Tag 예시 구조
my-project/
├── nginx/
│ ├── latest
│ ├── 1.23
├── backend-app/
│ ├── 1.0.0
│ ├── dev-branch
각 태그는 특정 시점의 이미지 상태를 나타냅니다.
CI/CD 환경에서는 latest
, dev
, v1.0.0
등의 태그를 전략적으로 사용할 수 있습니다.
✅ Tag 전략 팁
전략 | 설명 |
---|---|
latest | 항상 최신 배포 버전 |
v1.0.0 | 명확한 릴리즈 버전 구분 |
commit-hash | Git SHA 기반 고유 이미지 태그 |
dev/stage/prod | 환경별 구분 |
4️⃣ + 이미지 삭제 정책 및 Garbage Collection
Harbor는 이미지 삭제 후에도 실제 디스크에서 바로 삭제되진 않습니다.
Garbage Collection(GC) 기능을 통해 디스크 공간을 확보할 수 있습니다.
1. 이미지 삭제 방법 (UI)
- Harbor Web UI 접속
- 프로젝트 > 저장소 > 이미지 선택
- “Delete” 클릭
→ 참고: 이 작업은 이미지 참조를 끊을 뿐, 저장소에서 실제로 삭제되지는 않음!
2. Garbage Collection 실행
docker exec -it harbor-core bash
harbor_gc
또는 관리자 UI에서 설정:
Administration ▶ Garbage Collection ▶ Run Manually
✅ 이미지 삭제/GC 흐름도
[사용자] → Harbor UI에서 이미지 삭제
↓
[Harbor] → Tag 제거 (메타데이터만 제거됨)
↓
[Admin 실행 시]
Garbage Collection
↓
[Blob 파일 실제 제거, 디스크 공간 확보]
💡 추가 팁: 자동 GC 스케줄 설정
Administration ▶ GC ▶ Schedule: Daily or Weekly
마지막 수정일자