Study/CS

Bootable container, 그리고 bootc

마늘김 2025. 4. 16. 23:29

부팅 가능한 컨테이너와의 첫 만남

 한 달 정도 전, 오픈 인프라 커뮤니티 코리아의 오프라인 세미나에서 bootc를 접하게 되었습니다. 사실 처음에 들었을 때는 이게 대체 뭘 하는 건지 감이 잘 오질 않았습니다. 분명 제가 알고 있는 전통적인 관점에서는 가상머신의 단점을 해결하고자 컨테이너가 등장했다고 했는데... 근데 다시 그 컨테이너를 부팅한다고요? 아니 왜?

이미지 출처: https://www.wallarm.com/what/containers-vs-virtual-machines

 위 그림에서도 볼 수 있듯, 가상머신과 컨테이너는 아예 개념 자체가 다릅니다. 가상 머신은 하이퍼바이저 위에서 개별적인 커널로 구동되는 독립적인 시스템이고, 컨테이너는 OS위의 프로세스일 뿐이므로(물론 독립적인 특징이 있긴 하지만) 부팅이라는 개념이 없습니다. 컨테이너를 띄운다는 것은 OS 입장에서는 단지 프로세스를 실행하는 것뿐이죠. 그런데 '어떻게 부팅이 가능하다는 거지?', 너무 혼란스러웠습니다.

 'VM과 컨테이너 중간에 무엇인 건가? 아니 그럼 그건 VM이야 컨테이너야? 도대체 뭐 때문에 만들어진 거지?' 이런 많은 질문들이 머리를 가득 채웠습니다.


Bootable Container

 부팅 가능한 컨테이너는 애플리케이션 컨테이너로부터 영감을 받았습니다. OS 관리에 컨테이너 기술을 적용하려는 시도에서 등장하여 OS 업데이트를 더 효율적이고 안정적으로 만들 수 있는 방법을 제시하고 있습니다. 주로 Fedora, CentOS Stream에서 주도하고 있으며 부팅가능한 컨테이너 이미지 역시 이곳에서 공식적으로 제공하고 있습니다.

 

bootc란?

 bootc는 부팅 가능한 컨테이너 개념을 구현하는 구체적인 프로젝트 또는 도구를 의미합니다. OCI 컨테이너 이미지를 사용하여 트랜잭션 기반의 운영 체제 업데이트를 제공하는 CLI입니다. 따라서 컨테이너 이미지 내에서 사용되는 도구로 컨테이너 이미지의 일부입니다. 주요 목적은 업데이트 관리, 시스템 상태 점검에 있습니다.


스터디 진척도

 그래서 여러 문서를 참고하고, 데모를 따라 해 보면서 Fedora41에서 Podman을 통해 CentOS 9 Stream을 부팅 가능한 컨테이너 이미지로 만들고, 이를 다시 raw 파일로 변환하여 KVM을 통해 간단하게 가상머신으로 띄워보는데 까진 성공 했습니다. OS에 Nginx를 설치하고 Nginx 서비스를 띄워 초기 페이지에 'This image is built as a bootable container.'와 같은 문구가 출력되게 하여 제가 원하는 데로 이미지가 잘 빌드되는지 까지도 확인을 하였습니다.

 그러나 이를 ISO나 VMDK 파일로 빌드하니 부팅시에 에러가 발생하고, 심지어는 아예 OS로 인식을 못하는 경우도 발생해서, 이 부분에 대한 트러블 슈팅을 하고 있습니다. 앞으로 이 부분이 완료되면 정식 포스팅을 통해 Bootable container와 bootc에 대해서 다뤄 보도록 하겠습니다.