키트 빌드하고 배포하기
키트 빌드하고 배포하기
키트를 작성한 뒤, 이미지를 레지스트리에 게시하거나 소스를 Git에 공유해서 배포해요. 이미지를 게시하면 다른 사람들이 직접 키트를 빌드할 필요가 없어요. 소스를 공유하면 샌드박스를 만들 때 그들이 직접 빌드할 수 있어요. 어느 쪽이든 sbx가 샌드박스를 구성하기 위해 키트의 디스크립터를 읽어요.
출처: 문서
본문
가용성: Early Access
이 페이지는 v3 키트를 게시하고 서명하는 방법을 보여줘요. 다른 사람이 공유한 키트를 실행하려면 Use kits를 참고해요.
이미지 게시하기 (Publish an image)
Docker Buildx로 키트를 OCI 이미지로 빌드하고 게시해요. YAML 디스크립터는 -f로, 소스 디렉터리는 빌드 컨텍스트로 전달해요.
$ 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 아키텍처 모두 지원하기
다른 머신을 쓰는 사람들과 공유하려면 지원되는 두 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
키트 세트 게시하기
세트는 같은 Buildx 명령으로 YAML 디스크립터를 -f로 전달해 게시해요. 빌드가 kits:에 나열된 게시된 이미지를 가져오고, 그 선언이 호환되는지 확인하며, 파일과 설정을 하나의 이미지로 결합해요. 완전한 예는 Compose a kit set을 참고해요.
결과물은 사람들이 바로 사용할 수 있는 워크로드 또는 믹스인 이미지예요. 각 컴포넌트의 매니페스트 다이제스트를 기록하는데, 이는 빌드에 사용된 정확한 이미지를 식별해요. 컴포넌트의 태그를 업데이트해도 게시된 세트는 바뀌지 않아요. 업데이트를 공유하려면 세트를 재빌드하고 다른 버전을 게시해요. 재빌드가 같은 컴포넌트 이미지를 사용하길 원하면 kits:의 각 ref 옆에 다이제스트를 추가해요.
Git으로 소스 공유하기
키트의 소스 디렉터리를 Git 저장소에 커밋한 뒤 이 형식으로 참조를 공유해요. 키트 디렉터리는 dir로, 커밋은 ref로 선택해요.
git+https://github.com/<ORG>/<REPOSITORY>.git#ref=<COMMIT>&dir=my-kit
누군가 그 참조에서 샌드박스를 만들면 sbx가 선택된 커밋에서 키트를 빌드해요.
키트 서명하고 검증하기
게시된 이미지에 서명해서 다른 사람들이 누가 서명했는지 검증할 수 있게 해요.
$ 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 발급자가 필요해요. 키로 서명하려면 서명에 --key cosign.key, 검증에 --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으로 실행하면 이미지 구성만 사용하므로, 그 설정과 훅은 적용되지 않아요.