CNCF Distribution 의 registry 이미지 하나로 띄우는 가장 단순한 사설 레지스트리다. 인증 · UI · 스캔이 없으므로 개인 실험이나 폐쇄망 임시 저장소에 맞고, 팀 운영에는 Harbor 를 쓴다. 현행 이미지는 registry:3 이다[1].
docker compose 플러그인)domain.crt · domain.key 를 만든다/etc/hosts 등록sudo mkdir -p /data/volumes/registry/{certs,registry}
sudo cp domain.crt domain.key /data/volumes/registry/certs/
services:
registry:
image: registry:3
ports:
- 443:443
volumes:
- /data/volumes/registry/certs:/certs
- /data/volumes/registry/registry:/var/lib/registry
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:443
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
restart: always
version: 키는 Compose v2 이후 무시되므로 적지 않는다.
docker compose up -d
docker compose logs -f
docker compose down
htpasswd 파일을 만들어 마운트하면 docker login 을 요구한다.
docker run --rm --entrypoint htpasswd httpd:2 -Bbn $USERNAME '${PASSWORD}' > /data/volumes/registry/auth/htpasswd
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
volumes:
- /data/volumes/registry/auth:/auth
curl -s https://registry.example.com/v2/_catalog
docker tag alpine:3.20 registry.example.com/library/alpine:3.20
docker push registry.example.com/library/alpine:3.20
사설 CA 를 썼다면 클라이언트마다 /etc/docker/certs.d/registry.example.com/ca.crt 에 CA 인증서를 둔다 — Docker private registry insecure 설정.
2026-09-20 확인. https://distribution.github.io/distribution/about/deploying/ ↩︎