
최근 Docker에 대해 학습하며 Harbor를 이용해 Private Registry 서버를 구축해보았다. 이 과정에서 Docker Registry 개념과 Docker Hub, Docker Desktop에 대해 궁금증이 생겼고, Docker Desktop 없이 Windows 환경에서 어떻게 Docker Engine을 실행하는지 정리하게 되었다.
Docker Harbor에 아주 간단한 PR로 올렸다!
Docker Registry란?
Docker Registry는 Docker Image를 저장하고 배포하는 저장소 서버이다.
Docker는 컨테이너 실행 시 이미지를 Pull 하거나 Push 하는데, 이때 Registry 서버를 이용한다.
Docker Hub
- Docker Hub는 Docker에서 공식 제공하는 퍼블릭 Registry 서비스다.
- 별도 설치가 필요 없고, 공식 이미지가 풍부하며, 무료로 사용 가능하다.
- 하지만 무료 플랜에서는 Private Repository 개수가 제한되기 때문에, 사내 Registry 서버로는 적합하지 않다.
Docker Harbor
- 이러한 문제를 해결하기 위해 많이 사용하는 서버중 하나가 Docker Harbor이다.
- Private Registry 구축가능, 계정/권한 관리 등 다양한 기능들이 존재한다.
Docker Desktop이란?
Docker Desktop은 Windows / Mac 환경에서 Docker를 쉽게 사용할 수 있도록 도와주는 패키지 도구이다.
- Docker Engine
- Linux VM (WSL2 기반)
- GUI Dashboard
- Network 설정
- Volume 관리
등 다양한 기능을 제공한다.
하지만 회사 환경에서는 Docker Desktop을 사용하기 위해서는 유료 라이센스를 구매 해야한다.
또한 개발자 로컬 전용 도구이며, 운영 서버에서는 사용할 수 없어 Docker Engine 설치를 해야한다.
Docker Harbor
Harbor는 Private Docker Registry 솔루션이며, 무료로 사용할 수 있는 오픈소스이다.
주요기능
- Private Registry 구축
- 사용자 / 프로젝트 단위 권한 관리
- 이미지 취약점 스캐닝
- Web UI 제공
- LDAP, AD 연동 지원
- Image Signing
Docker Engine이란?
Docker Engine은 Docker의 핵심 런타임 엔진이다.
주요역할
- 컨테이너 생성
- 네트워크 생성
- 이미지 Pull/Push
- 볼륨 마운트
- 프로세스 관리
Windows에서 Docker Desktop 없이 Docker를 사용하기 위해서는 “WSL2 + Linux Docker Engine 직접 설치” 가 필요하다.
WSL2이란?
WSL2는 Windows Subsystem for Linux 2로, Windows 안에서 실제 Linux 커널을 가상화 기반으로 실행할 수 있게 해주는 기능이다.
Docker는 리눅스 커널 기능을 기반으로 동작한다. 하지만 Windows는 리눅스 커널이 아니기 때문에 Docker Engine을 네이티브로 직접 실행할 수 없어 아래와 같은 구조로 동작한다.
Windows → WSL2(Linux Kernel) → Docker Engine → Container
즉, WSL2가 Docker가 실행될 수 있는 Linux 실행 환경을 제공하는 역할을 한다.
Docker Harbor 서버 구축하기
# harbor 설치
wget <https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz>
# 압축 풀기
tar -xf harbor-offline-installer-v2.12.2.tgz
# harbor.yml 설정
vim harbor.yml
# hostname 설정
sudo hostnamectl hostname registry.example.com
# 이미지 push 테스트
docker image tag mariadb:latest registry.example.com/myapp/mariadb:latest
docker push registry.example.com/myapp/mariadb:latest

Docker Harbor 서버를 구축하면 위와 같이 Web UI를 이용할 수 있다.

사용자 등록 화면이다. "성과 이름" 이라는 표현이 너무 어색해서 "이름(성명)"으로 수정하는 PR을 올렸다. Merge가 될지는 모르곘지만, 일단 올려봤다!
https://github.com/goharbor/harbor/pull/22701
fix(i18n): improve Korean translation of FULL_NAME by InGyu-Moon · Pull Request #22701 · goharbor/harbor
Comprehensive Summary of your change This PR updates the Korean translation of the "FULL_NAME" label in the user creation form from "성과 이름" to "이름(성명)", as the current...
github.com
'DevOps > Docker' 카테고리의 다른 글
| [Docker] DinD(Docker in Docker) 와 DooD(Docker out of Docker) (2) | 2025.02.02 |
|---|---|
| [Docker] Container의 불변성과 Volume, Bind Mount (0) | 2025.01.29 |
| [Docker] docker compose - redis 연결 불가 오류 (2) | 2024.02.27 |
| [Docker] docker compose로 Spring + MySQL 배포 환경 만들기 (1) | 2024.02.22 |
| [Docker] 도커 개념, 기본 명령어 정리 (0) | 2024.02.19 |
댓글