Containerfile ile özel bootc imajı derleme

`bootc` mimarisinde bir işletim sistemi, standart bir OCI konteyneri gibi tanımlanır, Podman veya Buildah ile derlenir ve bir konteyner kayıt defterine (Quay.io, Docker Hub, GHCR vb.) aktarılır.



### 1. Adım: Containerfile Hazırlama

Sistemin temel bileşenlerini, ek paketlerini ve yapılandırmalarını içeren bir `Containerfile` (veya `Dockerfile`) oluşturulur. Taban imaj olarak resmi Fedora bootc imajları kullanılır:

“`dockerfile
FROM quay.io/fedora/fedora-bootc:40

# Gerekli ek sistem paketlerinin kurulması ve önbelleğin temizlenmesi
RUN dnf -y install \
cockpit \
htop \
wireguard-tools \
git && \
dnf clean all

# Cockpit veya benzeri sistem servislerinin açılışta etkinleştirilmesi
RUN systemctl enable cockpit.socket

# Özel sistem yapılandırma dosyalarının eklenmesi (isteğe bağlı)
# COPY sysctl.conf /etc/sysctl.d/99-custom.conf

“`

> **Önemli Not:** Değişmez sistem yapısı gereği sistem dosyaları `/usr` altına, varsayılan yapılandırmalar ise `/usr/etc` veya `/etc` altına yazılmalıdır. `/var` ve `/home` içerikleri imaj derleme aşamasında taşınmaz, çalışma anında dinamik oluşturulur.



### 2. Adım: İmajı Podman ile Derleme

Hazırlanan dosyanın bulunduğu dizinde Podman kullanılarak imaj derlenir:

“`bash
podman build -t quay.io/kullanici_adiniz/fedora-custom:latest -f Containerfile .

“`

*Derlemenin başarılı olduğunu doğrulamak için:*

“`bash
podman images | grep fedora-custom

“`



### 3. Adım: Konteyner Kayıt Defterine (Registry) Yükleme

Hedef kayıt defterine giriş yapılır ve imaj yayınlanır:

“`bash
podman login quay.io
podman push quay.io/kullanici_adiniz/fedora-custom:latest

“`



### 4. Adım: İmajı Hedef Makineye Dağıtma

Yayınlanan imajı çalışan bir Fedora Atomic / bootc sistemine geçirmek için hedef makinede şu komut çalıştırılır:

“`bash
sudo bootc switch quay.io/kullanici_adiniz/fedora-custom:latest
sudo reboot

“`

Sistem yeniden başladıktan sonra yeni imajın aktif olduğunu kontrol etmek için:

“`bash
bootc status

“`

Bu model sayesinde işletim sisteminde yapılan tüm paket ve ayar değişiklikleri yerel makinede tek tek uğraşmak yerine Git deposu ve CI/CD (GitHub Actions / GitLab CI) hatlarında otomatik derlenip tüm cihazlara tek komutla dağıtılabilir.

Bir Cevap Yazın