1. 2026-01-30: Podman에서 sudo를 붙였을때와 붙이지 않았을때, 이미지가 저장되는 위치가 다르다고?
Podman은 rootful과 rootless 모드에 따라 이미지 저장소가 다르며, ISO 빌드를 위해서는 sudo 사용이 필수적이다. 운영체제에 따라 sudo의 의미가 달라지고, 모든 작업에서 권한 일관성을 유지해야 한다. ISO 제작 과정에서는 로그인부터 이미지 생성 및 배포까지 모든 단계를 rootful 모드로 통일하는 것이 가장 효율적이다.
#Docker #Infra
2. 2026-01-28: OCI의 세가지 스펙
OCI의 세 가지 스펙은 이미지 구조, 실행 방법, 배포 방법으로 나뉩니다. 이미지 구조는 여러 레이어로 구성되며, 각 레이어는 해시값으로 식별됩니다. 실행 방법은 컨테이너를 설치하는 방식으로, runc가 지시사항을 읽고 실행합니다. 배포 방법은 레지스트리 서버와의 대화 규칙을 포함하며, HTTP API 엔드포인트와 호출 순서가 정의되어 있습니다.
#Docker
3. 2026-01-28: 컨테이너에서 해시 왜 씀?
해시는 파일 내용을 기반으로 하여 각 레이어 tar 파일, config.json, manifest.json을 해시하여 레지스트리에서 식별합니다. 해시는 내용의 동일성만 보장하지만, 안전성이나 악성코드 여부는 확인하지 않으므로 서명이 필요합니다. 레지스트리는 해시를 통해 중복 저장을 방지하며, 이미지 전송 시 해시 검증을 통해 변조 여부를 확인합니다.
#Docker
4. 2026-01-25: Let’s Bootc! [11] - 시리즈를 마무리하며… 전체 흐름 정리
bootc 시리즈를 통해 기술을 이해하는 여정을 회고하며, bootc 이미지의 구조와 작동 원리, 기존 도구의 재활용, 그리고 인프라 코드화의 중요성을 강조한다. 또한, bootc의 장점과 다양한 활용 가능성을 설명하고, 앞으로의 발전 방향에 대한 통찰을 공유한다.
#Docker #Infra
5. 2026-01-25: Let’s Bootc! [10] - 데이터의 불변성은 어떻게 설정할까?
불변성을 유지하는 시스템에서 사용자 데이터를 효과적으로 관리하기 위한 방법으로, 퍼블릭 클라우드나 GitHub의 한계를 극복하기 위해 홈서버에 S3 호환 오브젝트 스토리지를 구축하고, restic을 통해 백업 데이터를 암호화하는 방안을 제안합니다. 또한, systemd user timer를 활용하여 백업을 자동화하고, 복원 가능성을 확보하기 위한 리허설을 권장합니다. 최종 목표는 새로운 하드웨어에 기존 환경을 손쉽게 복원하는 것입니다.
#Docker #Infra
6. 2026-01-25: Let’s Bootc! [9] - How To Upload Private Registry ?
프라이빗 레지스트리에 접근하기 위한 인증 설정 방법을 다루며, 인증 파일인 /etc/ostree/auth.json의 위치와 관리 방법, 그리고 Public 저장소에서 보안을 유지하는 방법을 설명한다. 인증 정보는 이미지에 포함시키지 않고 설치 시점에 주입하는 방식이 권장되며, /etc의 3-way merge 방식으로 업데이트 시에도 인증 파일이 유지될 수 있다.
#Docker #Infra
7. 2026-01-25: Let’s Bootc! [8] - Container Registry : bootc 이미지 저장소는 어디가 좋을까?
bootc 이미지 저장소 선택 시 Docker Hub는 대용량 이미지 전송 시 타임아웃 문제가 발생하며, GHCR은 안정적인 대용량 전송과 Pull 제한이 없고 GitHub 생태계와 통합되어 운영 편의성이 좋다. Harbor는 완전한 프라이빗 환경을 제공하지만 직접 운영해야 하는 부담이 있다. 세 가지 모두 OCI 표준을 따르므로 필요에 따라 자유롭게 전환할 수 있다.
#Docker #Infra
8. 2026-01-25: Let’s Bootc! [7] - OSTree : bootc는 재부팅이 왜 이렇게 빠를까?
OSTree는 운영체제 바이너리의 원자적 전환을 지원하는 기술로, Git의 content-addressed 모델을 기반으로 합니다. 시스템 업데이트 중 전원이 꺼져도 이전 또는 새로운 시스템 중 하나로 부팅되며, 하드링크를 사용하여 디스크 공간을 절약하고 롤백이 용이합니다. bootc 프로젝트는 OSTree의 개념을 OCI 컨테이너 이미지로 확장하여 기존 도구와 인프라를 활용합니다.
#Docker #Infra
9. 2026-01-25: Let’s Bootc! [7] - What is .toml ?
toml 파일은 bootc-image-builder가 디스크 이미지를 생성할 때 적용할 커스터마이징을 정의하며, 사용자 계정, SSH 키, 파티션 레이아웃, 커널 파라미터, kickstart 스크립트를 설정할 수 있다. 설정은 최초 설치 시 /etc에 기록되고, 이후 업그레이드 시 3-way merge를 통해 유지된다. 간단한 설정은 toml로, 복잡한 설치 로직은 kickstart 스크립트로 처리할 수 있다.
#Docker #Infra
10. 2026-01-25: Let’s Bootc! [6] - Anaconda & Kickstart
Anaconda는 25년간 RHEL 계열 배포판의 표준 설치 프로그램으로 자리 잡았으며, kickstart 파일을 통해 반복 가능한 설치를 지원한다. bootc-image-builder는 ISO 생성 시 anaconda와 kickstart를 활용하여 컨테이너 이미지를 배포하는 과정을 자동화하며, 기존의 검증된 도구를 재활용하여 설치 과정의 효율성을 높인다. 새로운 기술 도입 시 기존 인프라와의 호환성을 유지하는 것이 중요하다.
#Docker #Infra
11. 2026-01-25: Let’s Bootc! [4] - File System
bootc 시스템의 파일시스템은 세 가지 영역으로 나뉘며, 각각의 특성이 다릅니다. /usr는 완전히 불변이며, 패키지 설치는 이미지 빌드 시에만 가능하고, /etc는 수정 가능하지만 3-way merge가 적용되어 로컬 수정과 이미지 변경이 충돌할 수 있습니다. /var는 완전히 가변이며, 애플리케이션 데이터와 상태가 저장됩니다. 이러한 구조는 불변 인프라 원칙을 구현한 것으로, 시스템을 수정하기보다는 교체하는 접근 방식을 강조합니다.
#Docker #Infra
12. 2026-01-25: Let’s Bootc! [2] - What is OCI?
OCI는 컨테이너 생태계의 표준을 정의하여 Docker와 Podman 간의 호환성을 보장합니다. bootc는 OCI 이미지를 사용하여 운영체제를 업데이트하며, 기존 도구와 레지스트리를 그대로 활용할 수 있습니다. bootc 이미지는 커널과 initramfs를 포함하여 부팅 가능한 컨테이너 개념을 구현합니다.
#Docker #Infra
13. 2026-01-25: Let’s Bootc! [1] - Quick Starter : 百聞不如一見
Top-Down 방식을 통해 CentOS Stream 10 기반의 GUI 환경을 구축하는 실습을 진행하며, KDE Plasma 데스크톱 환경을 설정하는 방법을 설명합니다. Podman을 사용하여 컨테이너 이미지를 생성하고, 이를 ISO 파일로 변환하여 USB에 설치하는 과정과 업데이트 및 롤백 기능을 테스트하는 방법을 포함합니다. 각 단계에서 필요한 설정과 명령어를 상세히 안내하며, 최종적으로 부팅 가능한 불변의 OS를 구축하는 과정을 다룹니다.
#Docker #Infra
14. 2026-01-25: Let’s Bootc! [0] - Meet The Bootc
bootc 기술은 부팅 가능한 컨테이너를 ISO 형태로 만들어 USB에 설치할 수 있는 혁신적인 방법으로, 특히 엣지 디바이스 환경에서 유용하다. 이 기술은 뛰어난 포터빌리티와 시스템의 불변성을 제공하며, 개인적인 OS 환경을 구축하는 데 매력적이다. 이를 통해 효율적인 환경 관리와 간편한 롤백이 가능하다.
#Docker #Infra
15. 2026-01-18: 왜 bootc 이미지 저장소로 Docker Hub가 아닌 GHCR을 선택했는가
bootc는 컨테이너 이미지를 OS로 부팅하는 기술로, Docker Hub의 한계로 인해 GHCR로 마이그레이션을 결정했다. Docker Hub는 대용량 이미지 전송에 적합하지 않으며, 반복적인 "Access Denied" 오류가 발생했다. 반면 GHCR은 무제한 저장 용량과 안정적인 대용량 전송을 제공하며, GitHub 생태계와 통합되어 있다. 결론적으로, GHCR은 bootc와 같은 대용량 이미지에 더 적합하다.
#Docker
16. 2026-01-03: Podman에서 bootC로 centOS GUI 굽는 과정을 파헤쳐보자
Podman을 사용하여 centOS GUI를 빌드하는 과정은 Rootful 모드에서의 머신 초기화, 비밀번호 해시 생성, Containerfile 및 config.toml 생성, 이미지 빌드, 레지스트리에 푸시, 이미지 풀, ISO 빌드 및 확인으로 구성된다. 각 단계에서 Podman VM과 Mac 간의 데이터 흐름과 마운트의 역할이 중요하며, 최종적으로 설치 가능한 ISO 파일을 생성하는 방법을 설명한다.
#Docker