키트 빌드·배포
키트 빌드·배포 (Build and distribute kits)
키트를 레지스트리의 이미지나 Git 소스로 공유하는 방법을 알아볼게요.
출처: 문서
본문
키트를 작성한 뒤 레지스트리의 이미지를 게시하거나 소스를 Git으로 공유해요. 이미지를 게시하면 다른 사람이 키트를 직접 빌드하지 않아도 돼요. 소스를 공유하면 그들이 샌드박스를 만들 때 빌드할 수 있어요. 어느 쪽이든 sbx는 키트의 디스크립터를 읽어 샌드박스를 구성해요.
이 페이지는 v3 키트를 게시하고 서명하는 방법을 보여줘요. 다른 사람이 공유한 키트를 실행하려면 Use kits 문서를 보세요.
이미지 게시하기 (Publish an image)
Docker Buildx로 키트를 OCI 이미지로 빌드하고 게시해요. -f로 YAML 디스크립터를, 빌드 컨텍스트로 소스 디렉터리를 전달해요:
$ docker login
$ docker buildx build ./my-kit -f ./my-kit/my-kit.yaml \
-t docker.io/<NAMESPACE>/my-kit:1.0.0 --push
<NAMESPACE>를 push 할 수 있는 Docker Hub 네임스페이스로 바꾸세요. Buildx는 docker login 자격 증명으로 이미지를 push 해요.
레지스트리 참조로 실행하기 전에 이미지를 push 하세요. sbx는 게시된 이미지를 pull 해요. 호스트의 Docker 이미지 저장소에만 저장된 이미지는 쓸 수 없어요. 개발 중에는 로컬 소스 디렉터리를 sbx에 전달할 수 있어요. 개인 이미지에는 샌드박스용 레지스트리 자격 증명을 구성하세요.
v3 키트에는 Buildx를 사용하세요. sbx kit pack, push, pull 명령은 v1과 v2 키트용이에요.
두 Linux 아키텍처 지원하기 (Support both Linux architectures)
다른 머신을 쓰는 사람들과 공유하려면 두 지원 Linux 아키텍처로 빌드해요:
$ docker buildx build ./my-kit -f ./my-kit/my-kit.yaml \
--platform linux/amd64,linux/arm64 \
-t docker.io/<NAMESPACE>/my-kit:1.0.0 --push
키트 세트 게시하기 (Publish a kit set)
같은 Buildx 명령으로 -f에 YAML 디스크립터를 전달해 세트를 게시해요. 빌드는 kits:에 나열된 게시된 이미지를 가져오고, 선언들이 호환되는지 확인하며, 파일과 설정을 하나의 이미지로 결합해요. 완전한 예시는 Compose a kit set을 보세요.
결과는 사람들이 직접 쓸 수 있는 워크로드·믹스인 이미지예요. 각 구성 요소의 매니페스트 다이제스트를 기록하는데, 이것이 빌드에 사용된 정확한 이미지를 식별해요. 구성 요소의 태그를 갱신해도 게시된 세트는 바뀌지 않아요. 업데이트를 공유하려면 세트를 다시 빌드하고 다른 버전을 게시하세요. 재빌드가 같은 구성 요소 이미지를 쓰길 원하면 kits:의 각 ref 옆에 digest를 추가하세요.
Git으로 소스 공유하기 (Share source through Git)
키트의 소스 디렉터리를 Git 저장소에 커밋한 뒤 이 형식으로 참조를 공유해요. 키트 디렉터리를 고르려면 dir, 커밋을 고르려면 ref를 사용해요:
git+https://github.com/<ORG>/<REPOSITORY>.git#ref=<COMMIT>&dir=my-kit
누군가 그 참조에서 샌드박스를 만들면 sbx가 선택된 커밋에서 키트를 빌드해요.
키트 서명·검증하기 (Sign and verify kits)
게시된 이미지에 서명해 다른 사람이 누가 서명했는지 검증하게 해요:
$ sbx kit sign docker.io/<NAMESPACE>/my-kit:1.0.0
$ sbx kit verify docker.io/<NAMESPACE>/my-kit:1.0.0 \
--certificate-identity <SIGNER_IDENTITY> \
--certificate-oidc-issuer <ISSUER_URL>
이 명령들은 Cosign과 호환되는 Sigstore 서명을 사용해요. 예시는 키 없이 서명하므로 검증에 서명자의 인증서 정체성과 OpenID Connect 발급자가 필요해요. 키로 서명하려면 sign에 --key cosign.key, verify에 --key cosign.pub을 전달하세요.
키트를 쓰기 전에 유효한 서명을 요구하려면 Verify kit signatures 문서를 보세요.
소스 디렉터리나 Git 참조로 공유된 v3 키트는 서명할 수 없어요. 서명이 필요하면 OCI 이미지를 게시하고 서명하세요.
게시 형식 (Published format)
게시된 키트 이미지에는 키트의 콘텐츠와 디스크립터가 모두 담겨 있어요. Docker 이미지 도구가 검사하고 배포할 수 있고, Docker Sandboxes는 샌드박스를 만들 때 디스크립터를 읽어요.
/usr/share/sandbox/kit/<stem>/ 아래 샌드박스 안에서 디스크립터를 검사할 수도 있어요. 이미지 주석과 파일 레이아웃은 Published image format 문서를 보세요.
sbx를 사용해 키트 디스크립터에 선언된 설정과 훅으로 워크로드를 실행해요. docker run으로 실행하면 이미지 구성만 사용하므로 그 설정과 훅이 적용되지 않아요.
더 알아보기 (Learn more)
관련 문서와 심화 내용은 원문을 참고해 주세요.