~) • 팀에서 개발한 많은 서비스 백엔드가 ASP.NET 기반입니다. • 그래서 저도 .NET 어쩌다 보니 많이 사용합니다(?) • 커뮤니티 활동은 주로 우분투 커뮤니티에서 활동 중 입니다. • 우분투한국커뮤니티: 각종 잡다한 일거리 담당(?) • Ubuntu Local Community Council (2024-2025) • UbuCon Asia Committee (2021~) • 개인 웹사이트: https://Youngbin.xyz • Email: [email protected] | [email protected] 발표자 소개 한영빈 Youngbin Han
OCI 컨테이너 이미지 • Ubuntu LTS 에서 제공하는 안전(Secure)하고 안정적(Stable)인 각종 패키지를 컨테이너 이미지 빌드에 활용. • Pebble 을 통해 컨테이너 내부 프로세스와 서비스 엔트리포인트 관리 • 통합된 Chisel 기능을 통한 쉬운 컨테이너 이미지 경량화 • YAML 파일을 통해 컨테이너 이미지 빌드 정의 (rockcraft.yaml) • Rock 을 빌드하기 위한 도구 • rockcraft.yaml 을 통해 Rock 빌드 정의 • Chisel 통합 - rockcraft.yaml 에서 컨테이너에 의존성으로 넣을 패키지 chisel 구성 가능 • YAML 형식은 Snapcraft (Snap 패키지 빌드 도구), Charmcraft (Juju Charm 빌드 도구)의 YAML 파일과 유사한 형식 사용. https://documentation.ubuntu.com/rockcraft/en/latest/explanation/rocks/
• 각 패키지에서 앱 실행에 필요한 것만 "끌로 깎아(Chisel)"다가 넣는 것. • https://tech.cloudmt.co.kr/2023/11/29/ dotnet-chiselled-ubuntu-container/ Chisel & Chiselled Ubuntu Container
Prime Part A Part B Pull: 각 Part 별로 필요한 소스 및 의존성을 불러와서 준비하는 단계 Overlay: Build 단계 진행 전, Base Filesystem을 수정해야 하는 경우 활용 Build: 각 Part별 소스 및 의존성으로 빌드 진행 Stage: 각 Part별 별로 실제 실행에 필요한 빌드 결과물과 의존성만 모아서 정리 Prime: 각 Part별 Stage 단계에서 정리된 것을 하나로 모으고, 컨테이너 이미지에서 불필요한 것은 이 단계에서 마지막으로 정리
등… • base, build-base • 컨테이너 베이스 이미지, 빌드 환경 베이스 이미지 지정 • 환경변수 지정: environment • Services: Pebble 에서 실행할 서비스 구성 지정 • Platforms: 컨테이너 빌드 대상 아키텍처 지정 • Parts: 컨테이너 빌드 과정 정의 https://documentation.ubuntu.com/rockcraft/en/stable/reference/rockcraft.yaml/#example