TL;DR

  • Range는 이미지를 먼저 내려받지 않아도 최대 1TB 규모의 Linux 환경을 빠르게 여는 도구로, 최초 인덱싱 이후에는 환경에 따라 1초 이내에 실행 가능함.
  • Docker 이미지의 첫 실행에서는 이미지를 내려받고 모든 레이어를 인덱싱하며, 이 작업은 docker pull과 마찬가지로 한 번만 수행됨.
  • python:3.12 환경은 두 번째 실행에서 2.82초 만에 준비되며, 실행 결과 Python 3.12.14 확인 가능함.
  • python:3.12와 python:3.13은 처음 네 레이어를 공유해, 후속 버전 실행 시 400MB 중 30MB만 내려받음.
  • 미리 인덱싱한 .range 형식은 다운로드량을 크게 줄이며, Go 환경 사례에서는 1GB 중 6MB만 내려받고 1.85초 뒤 실행 가능함.

Docker 이미지 실행

  • range shell python:3.12를 처음 실행하면 이미지를 내려받고 모든 레이어를 인덱싱하며, 같은 이미지를 다시 실행할 때는 이 과정을 반복하지 않음.
  • 두 번째 실행의 환경 정보는 논리적 크기 1.35GB, 런타임 darwin/arm64, 대화형 워크로드, 이전 세션 4회, 준비 시간 2.82초임.
  • 실행 환경에서 확인한 Python 버전은 3.12.14임.
  • python:3.13 실행 시 python:3.12와 공유하지 않는 레이어만 인덱싱하며, 레이어 5~7의 크기는 각각 6.20MB, 26.89MB, 249바이트임.
  • 두 이미지가 처음 네 레이어를 공유하므로 총 400MB 중 30MB만 내려받음.

`.range` 이미지 실행

  • https://github.com/andreygrehov/range/releases/download/demo/go1.23-arm64.range를 지정하면 파일 시스템이 이미 인덱싱된 .range 환경을 실행하며, 별도 인덱싱이 필요하지 않음.
  • 사례에서는 전체 1GB 중 6MB만 내려받고 1.85초 뒤 환경에 진입하며, 확인된 Go 버전은 go1.23.12 linux/arm64임.
  • 향후 상위 NN Docker 이미지를 인덱싱해, 첫 실행에서도 다운로드가 필요하지 않도록 할 계획임.
  • 자세한 내용은 Range 웹사이트와 GitHub 저장소에서 확인 가능함.