Community코딩 & 개발github.com

local-registry

로컬 OCI 레지스트리를 시작하고 관리하여 Bottlerocket 키트 개발을 지원합니다.

local-registry란 무엇인가요?

이 스킬은 로컬 OCI 레지스트리를 시작하고 관리하는 방법을 제공합니다. Bottlerocket 키트 개발 과정에서 외부 레지스트리 접근 없이 키트를 빌드하고 게시할 수 있도록 해줍니다. 주로 grove 디렉토리 내에서 Docker를 사용하여 레지스트리를 시작, 중지, 로그 확인, 데이터 정리 등을 수행합니다. `brdev registry` 명령어를 통해 간편하게 제어할 수 있으며, 환경 변수를 통해 이미지와 포트를 커스터마이징할 수 있습니다. 키트를 로컬로 빌드하거나 변형(variant) 빌드에 사용할 때 유용하며, 오프라인 환경이나 격리된 환경에서도 작업할 수 있게 해줍니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cbgbt/bottlerocket-forest/tree/main/skills/local-registry

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

스킬: 로컬 OCI 레지스트리

목적

개발용 로컬 OCI 레지스트리를 시작하고 관리합니다. 외부 레지스트리 접근 없이 키트를 로컬에서 빌드하고 게시할 수 있게 해줍니다.

사용 시기

  • 변형(variant)에서 사용할 키트의 변경 사항을 개발할 때
  • 프로덕션 레지스트리에 게시하기 전에 키트 변경 사항을 테스트할 때
  • 오프라인 또는 격리된 환경에서 작업할 때

사전 요구사항

  • Docker가 설치되어 실행 중이어야 함
  • grove 디렉토리 내에서 작업 중이어야 함

절차

레지스트리 시작

brdev registry start

이 명령은 다음을 수행합니다:

  • localhost:5000에 로컬 Docker 레지스트리 시작
  • 지속성 구성(레지스트리 데이터는 재시작 후에도 유지됨)
  • 레지스트리가 정상 상태가 될 때까지 대기
  • 빌드에서 사용할 레지스트리 URL 출력

레지스트리 실행 확인

brdev registry status

실행 중이면 종료 코드 0을 반환하고, 그렇지 않으면 0이 아닌 값을 반환합니다.

레지스트리 URL 가져오기

brdev registry url

현재 grove에 대해 localhost:{port}를 출력합니다. 포트를 하드코딩하는 대신 스크립트에서 이 URL을 사용하세요.

레지스트리 로그 보기

brdev registry logs

로그를 실시간으로 보려면:

brdev registry logs --follow

레지스트리 중지

brdev registry stop

참고: 이 명령은 레지스트리 데이터 볼륨을 보존합니다.

레지스트리 데이터 정리

brdev registry clean

컨테이너와 데이터 볼륨을 모두 제거합니다.

설정

brdev는 환경 변수를 사용하여 설정합니다. forest 루트에 .env 파일을 만들거나 환경 변수를 설정하세요:

# 사용자 지정 이미지 (기본값: registry:2)
BRDEV_REGISTRY_IMAGE=registry:2.8

참고: 컨테이너 이름과 볼륨 이름은 grove 이름에서 자동으로 생성되어 brdev-registry-{grove} 및 brdev-registry-data-{grove}가 됩니다. 포트는 grove 이름의 해시에서 자동으로 생성됩니다(범위 5001-5999).

검증

레지스트리 시작 후:

brdev registry list

다음을 반환해야 합니다: {"repositories":[]}

일반적인 문제

Docker가 설치되지 않음:

Error: Docker is not installed or not in PATH. Install Docker and ensure it's in your PATH

해결 방법: Docker를 설치하고 PATH에 추가하세요.

Docker 데몬이 실행 중이 아님:

Error: Docker daemon is not running. Start Docker with: sudo systemctl start docker

해결 방법: Docker 데몬을 시작하세요.

포트가 이미 사용 중:

Error: Failed to start container. The port may already be in use

해결 방법:

  • 기존 레지스트리 확인: docker ps | grep registry
  • 충돌하는 컨테이너 중지: docker stop <container-id>
  • 또는 FORESTER_REGISTRY_PORT를 통해 사용자 지정 포트 사용

권한 거부:

  • 사용자가 docker 그룹에 속해 있는지 확인: groups | grep docker
  • docker 그룹에 사용자 추가: sudo usermod -aG docker $USER
  • 그룹 추가 후 셸을 다시 시작해야 할 수 있음

관련 스킬

  • build-kit-locally - 로컬 레지스트리를 사용하여 빌드된 키트를 게시
  • build-variant-from-local-kits - 변형 빌드가 로컬 레지스트리를 사용하도록 구성

참고

로컬 레지스트리 사용을 위한 설정 명령:

키트 게시:

  • brdev twoliter use-local-publish - 로컬 레지스트리에 게시하기 위한 Infra.toml 생성
  • brdev twoliter use-upstream-publish - Infra.toml 제거

키트 가져오기:

  • brdev twoliter use-local-deps - 로컬 레지스트리에서 가져오기 위한 Twoliter.override 생성
  • brdev twoliter use-upstream-deps - Twoliter.override 제거

둘 다 (편의):

  • brdev twoliter use-local - 두 파일 모두 생성
  • brdev twoliter use-upstream - 두 파일 모두 제거

가져올 때 로컬 레지스트리에서 원하는 특정 키트에 대해 Twoliter.toml에 vendor = "local"도 설정하세요.

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

ad-hoc-implementation-plan

Transform a rough plan into implement-commit ready artifacts. Allows rigorous review while implementing.

build-kit-locally

Build a kit and publish it to a locally hosted registry for development testing

build-variant-from-local-kits

Build a variant using locally published kits for development validation

deep-research

Create educational documents that build understanding progressively with citations

edit-spec-file

Edit Bottlerocket RPM spec files following project style conventions

fact-find

Quick lookup of specific facts about Bottlerocket with citations

idea-honing

Clarify feature ideas through iterative Q&A, recording insights to guide concept development

implement-commit

Implement commits from an implementation plan using a TDD pipeline

prepare-core-kit-release

Prepare bottlerocket-core-kit for release by bumping version and updating changelog

propose-feature-concept

Create a new feature concept document to pitch the idea and explain the problem/solution

propose-feature-design

Create or update feature technical design document with architecture and implementation guidance

propose-feature-requirements

Create or update feature requirements specification using EARS notation with examples and appendices

propose-feature-test-plan

Create a test plan mapping EARS requirements and Critical Constraints to specific tests

propose-implementation-plan

Create an implementation plan with atomic commits that build toward a complete feature

review-code

Deep code review generating PR comments via principled question-driven analysis

review-scope

Verify code changes match intended scope and requirements without exceeding boundaries

review-style

Verify code follows project style guides without providing improvement suggestions

test-local-twoliter

Build and test local changes to twoliter before releasing

update-twoliter

Update all Bottlerocket repositories to a new Twoliter version

관련 스킬