Oh My Algorithm
Concept Guide레이어 전송 · 다이제스트

레지스트리 push·pull (Registry)

레지스트리는 이미지를 통째로 주고받지 않습니다. 이미지는 매니페스트(레이어 목록)와 레이어들로 나뉘어 있고, push·pull 은 상대가 갖고 있지 않은 레이어만 전송합니다. 각 레이어는 내용 해시(다이제스트)로 식별되므로 같은 베이스를 쓰는 이미지를 여러 개 올려도 베이스 레이어는 한 번만 저장됩니다.

01레지스트리 push·pull (Registry)

레지스트리는 이미지를 통째로 주고받지 않습니다. 이미지는 매니페스트(레이어 목록)와 레이어들로 나뉘어 있습니다.

push 는 먼저 매니페스트를 보냅니다. 각 레이어는 내용 해시(다이제스트)로 식별됩니다.

레지스트리가 대조해 답합니다. 베이스·의존성 레이어 4개는 1.1.0 때 이미 올라와 있어 다시 받을 필요가 없습니다.

그래서 실제로 올라가는 건 바뀐 앱 레이어 12 MB 하나뿐입니다. 이미지 전체는 155 MB지만 전송량은 그 1/10 미만입니다.

마지막으로 태그가 이 매니페스트를 가리키도록 확정합니다. 태그는 이름표일 뿐이고, 내용을 고정하는 건 다이제스트입니다.

배포 서버에서 pull 하면 같은 일이 거꾸로 일어납니다. 먼저 매니페스트를 받습니다.

로컬에 없는 레이어만 골라 내려받습니다. 같은 베이스를 쓰는 다른 이미지를 이미 받아 뒀다면 그 레이어는 건너뜁니다.

정리 · 레이어 단위 전송과 내용 기반 다이제스트 덕분에 두 번째 배포부터는 바뀐 레이어만 오갑니다. 자주 바뀌는 것을 위 레이어에 둘수록 전송량이 줄어듭니다.

my-app:1.2.0base · alpinesha256:…l1runtime · nodesha256:…l2deps · npmsha256:…l3configsha256:…l4app · dist/sha256:…l5
1 / 8

02 쉽게 이해하기

For Everyone
🔑핵심 동작

이미지는 매니페스트와 레이어들로 나뉘어 오갑니다. 레이어는 내용 해시로 식별되므로 상대가 이미 가진 레이어는 건너뛰고 없는 것만 전송합니다.

💡쉽게 말하면

push 는 먼저 매니페스트의 레이어 다이제스트를 보내 어떤 레이어가 이미 있는지 확인하고, 없는 것만 업로드합니다.

pull 도 마찬가지로 로컬에 없는 레이어만 내려받습니다.

그래서 두 번째 배포부터는 바뀐 레이어(대개 앱 소스 한 장)만 오가 훨씬 빠릅니다.

다이제스트가 내용 기반이라 태그가 달라도 내용이 같으면 같은 레이어로 취급됩니다.

📍어디에 쓰나
  • CI/CD 배포 시간 단축
  • 이미지 태그·다이제스트로 배포본 고정
  • 프라이빗 레지스트리 운영
  • 레이어 순서 설계로 전송량 줄이기

03 자주 묻는 질문

FAQ
레지스트리 push·pull (Registry)란 무엇인가요?+

레지스트리는 이미지를 통째로 주고받지 않습니다. 이미지는 매니페스트(레이어 목록)와 레이어들로 나뉘어 있고, push·pull 은 상대가 갖고 있지 않은 레이어만 전송합니다. 각 레이어는 내용 해시(다이제스트)로 식별되므로 같은 베이스를 쓰는 이미지를 여러 개 올려도 베이스 레이어는 한 번만 저장됩니다.

레지스트리 push·pull (Registry)은(는) 어디에 사용하나요?+

CI/CD 배포 시간 단축, 이미지 태그·다이제스트로 배포본 고정, 프라이빗 레지스트리 운영, 레이어 순서 설계로 전송량 줄이기

레지스트리 push·pull (Registry)를 쉽게 비유하면?+

이미지는 매니페스트와 레이어들로 나뉘어 오갑니다. 레이어는 내용 해시로 식별되므로 상대가 이미 가진 레이어는 건너뛰고 없는 것만 전송합니다.