6 puan yazan GN⁺ 2025-06-10 | 1 yorum | WhatsApp'ta paylaş
  • Containerization, macOS'ta Linux konteynerlerini çalıştırmayı mümkün kılan Swift tabanlı açık kaynaklı bir araçtır
  • Apple Silicon tabanlı Mac'lerde çalışır ve Virtualization.framework kullanarak her konteyneri hafif bir sanal makine içinde izole şekilde çalıştırır
  • OCI imaj yönetimi, uzak registry entegrasyonu, ext4 dosya sistemi oluşturma, konteyner çalışma ortamını kontrol etme gibi çeşitli özellikler içerir
  • Rosetta 2 ile Apple Silicon üzerinde x86_64 süreçlerini çalıştırma desteği sunabilir
  • Çok kısa açılış süresi, hafif ortam sağlama, kernel sürümünü özelleştirme gibi özelliklerle geliştirici esnekliğini ve performansını artırır

Proje genel bakışı

  • Containerization, uygulamaların Linux konteynerlerini kullanmasına yardımcı olan bir Swift paketidir
  • Swift diliyle uygulanmıştır ve Apple Silicon tabanlı Mac'lerde Virtualization.framework kullanarak çalışır
  • API üzerinden şu işlevleri sunar
    • OCI imajlarını yönetme
    • Uzak konteyner registry'leriyle entegrasyon
    • ext4 dosya sistemi oluşturma ve yerleştirme
    • Netlink socket family ile etkileşim
    • Hızlı açılış için optimize edilmiş Linux kernel sağlama
    • Hafif sanal makineler oluşturma ve yönetme
    • Sanal makinenin çalışma ortamını kontrol etme
    • Konteynerleştirilmiş süreçler oluşturma ve kontrol etme
    • Rosetta 2 kullanarak Apple Silicon üzerinde x86_64 süreçlerini çalıştırma
  • API belgeleri ayrı bir resmi sayfada görülebilir

Tasarım ve yapı

  • Her Linux konteyneri bağımsız bir sanal makine içinde çalışır
  • Her konteynere özel bir IP adresi atanabildiği için port forwarding olmadan ağ yönetimi daha kolaydır
  • Optimize edilmiş kernel ayarları ve hafif root dosya sistemi sayesinde 1 saniyenin altında konteyner açılışı mümkündür
  • vminitd, Containerization'ın bir alt projesidir ve sanal makine içinde ilk süreç olarak çalışan hafif bir init sistemidir
    • GRPC API aracılığıyla çalışma ortamını ayarlar ve konteyner süreçlerinin işletimsel yönetimini destekler
    • Girdi/çıktı, sinyal ve olay işlemelerini çağıran sürece iletir

Gereksinimler

  • Apple Silicon Mac cihazı gereklidir
  • Paketi derlemek için
    • macOS 15 veya üzeri ve Xcode 26 Beta
    • ya da macOS 26 Beta 1 veya üzeri gereklidir
  • macOS 15 kullanıldığında aşağıdaki işlev sınırlıdır
    • İzole olmayan konteyner ağ iletişimi: aynı vmnet ağı üzerindeki konteynerler arasında iletişim kurulamaz

Kullanım örnekleri

  • cctl yürütülebilir dosyası sağlanır: API'nin çeşitli işlevlerini deneyebileceğiniz playground benzeri bir araçtır
    • Başlıca komut örnekleri
      • OCI imajlarını işleme
      • Konteyner registry giriş işlemi
      • Root dosya sistemi blokları oluşturma
      • Basit bir Linux konteyneri çalıştırma

Linux kernel yapılandırması

  • Konteynerler için hafif sanal makineleri çalıştırmak üzere bir Linux kernel gerekir
  • Containerization tarafından sunulan optimize edilmiş kernel yapılandırması kernel dizininde bulunur
  • Bu yapılandırma yalnızca asgari özellikleri içererek hızlı açılış ve hafif ortam sağlar
  • Gerektiğinde her konteyner için kernel ayarları ve sürümü farklı şekilde belirtilebilecek bir API sunulur
    • Farklı kernel sürümlerini ve ayarlarını test etmek mümkündür
  • Kata Containers projesinin sunduğu vmlinux.container gibi önceden derlenmiş kernel'ler kullanılabilir
    • Ancak VIRTIO sürücülerinin kernel içine gömülü (compiled-in) olması gerekir

Geliştirme ve test süreci özeti

  • Swift, Static Linux SDK gibi ortamların hazırlanması gerekir
  • Kaynak kod derlenebilir ve test edilebilir (make all, make test integration komutları vb.)
    • Entegrasyon testlerini çalıştırmak için kernel imajı gerekir
  • gRPC/Protobuf ile ilgili belirli sürümleri kullanan bağımlılık yapılandırması desteklenir
  • API belgelerinin otomatik üretilmesi ve yerelde önizlenmesi özellikleri bulunur

Açık kaynak katkıları ve proje durumu

  • Katkılar memnuniyetle karşılanır
  • 0.1.0 sürümü ilk resmi sürümdür ve kaynak kararlılığı yalnızca minor sürüm aralığında garanti edilir
  • Bu politika gelecekteki minor sürümlerde değişebilir

Özet

  • Containerization, geliştiricilerin macOS'ta optimize edilmiş bir ortamda Linux konteynerlerini yönetmesini, çalıştırmasını ve geliştirmesini sağlayan yenilikçi bir Swift paketidir
  • Her konteyneri hafif, özel bir sanal makinede çalıştırarak izolasyon, performans, ağ yönetimi ve kernel özelleştirme avantajları sunar
  • Açık kaynak konteyner ortamını macOS'a yerel bir deneyim olarak taşımak isteyen geliştiriciler için uygun bir çözümdür

1 yorum

 
GN⁺ 2025-06-10
Hacker News görüşleri
  • En şaşırtıcı ve ilginç kısım olarak gördüğüm şeyi paylaşayım

    container projesine katkının memnuniyetle karşılanıp teşvik edildiğine dair mesaj, Apple için oldukça alışılmadık bir tavır gibi geliyor
    WebKit, KHTML'nin düşmanca bir fork'uydu; Darwin de sanki duvarın ötesinden parçalar aralıklı olarak fırlatılıyormuş hissi veriyordu
    Apple'ın son dönemde GitHub'da açtığı bu tür projelerde kullanıcı-geliştirici işbirliğinin daha da canlanmasını umuyorum
    Ben F/OSS (açık kaynak) eğilimli biriyim ama şirket politikası nedeniyle Linux kullanamayıp mecburen her gün Mac kullanan biriyim
    Apple Silicon'a geçildikten sonra evde kullandığım dizüstünü de Mac'e çevirdim ama bugünlerde Linux dostu alternatifler de giderek yaklaşınca beklentim artıyor
    Bu tür değişimler olumlu bir sinyal ve benim gibi içsel bir çelişki yaşayan kullanıcılar için iç rahatlatıcı bir gelişme
    Eğer bu açık kaynak işbirliği bir olumlu geri besleme döngüsüne dönüşürse, Apple ile topluluk arasındaki işbirliği kültürünün daha da büyüyebileceğini düşünüyorum
    Benim gibi geliştiricilerin bu değişimden doğrudan fayda görürken aynı zamanda Apple'a karşı daha fazla saygı da duyabileceği bir ortam hayal ediyorum

    • Apple'ın açık kaynak topluluğuna katılımı konusunda bunun o kadar da şaşırtıcı olmaması gerektiğini söyleyen bir görüş var
      Swift ve ilgili framework'lere de açık kaynak topluluğundan çok sayıda katkı geldiği belirtiliyor

    • Proje Linux'la ilgili olduğu için, Linux'un copyleft yapısı (güçlü açık kaynak lisansı) nedeniyle Apple'ın zaten işbirlikçi bir yaklaşım benimsemek zorunda kaldığını söyleyen bir bakış açısı da var

  • İlgili video olarak WWDC 2025 sunum videosu öneriliyor (https://developer.apple.com/videos/play/wwdc2025/346/)
    Her container'ın hafif bir Linux VM içinde izole edildiği bir yapı söz konusu
    container aracı indirilerek doğrudan çalıştırılabiliyor (https://github.com/apple/container/releases), macOS 26 gerekiyor

    • Bu gönderi https://github.com/apple/containerization ile ilgili; yani container projesiyle aynı şey değil
      containerization, uygulamaların bir container sidecar ile birlikte dağıtılması için tasarlanmış; bu yüzden daha ilginç bir haber
      Buna karşılık container, geliştiricilerin docker run ... benzeri bir ortam kullanabilmesi için var
      container ile ilgili ayrı bir HN başlığı da paylaşılmış (https://news.ycombinator.com/item?id=44229239)

    • macOS 15'te de çalışabiliyor ama bazı ağ özelliklerinin kısıtlı olabileceğini not etmekte fayda var

  • Basın bülteni ve WWDC oturumunda CLI aracının https://github.com/apple/container adresinde olduğu belirtiliyor
    Bu tür araçlara yoğun ilgi duyan biri olarak en güncel Xcode Beta'ya varsayılan olarak dahil edilmesini umuyordum ama henüz eklenmemiş
    Prebuilt paket şu anda hazırlanıyor; ilerleme durumu açık issue'dan takip edilebiliyor (https://github.com/apple/container/issues/54)

  • Docker açısından bunun nasıl hissettirdiğini merak ediyorum
    Docker for Desktop kullanıcılarının önemli bir kısmının Mac kullanıyor olabileceğini tahmin ediyorum

    • Bu değişimin aslında Docker Desktop geliştirmeyi çok daha kolaylaştıracağını söyleyen bir görüş var
      Artık bağımsız olarak Linux VM kurmak gerekmediği için geliştirme zorluğu azalıyor
      Yine de birçok kullanıcının alışık olduğu CLI, Docker Compose ve Docker'ın çeşitli kendine özgü UX özellikleri nedeniyle mevcut Docker Desktop'ı tercih etmeyi sürdüreceği öngörülüyor
      Container runtime'ını değiştirmek kolay bir iş değil

    • Docker'ın bunu muhtemelen podman'a baktığına benzer duygularla karşılayacağı tahmin ediliyor

    • Docker Desktop kapalı kaynaklı ticari bir yazılımken bu projenin özgür yazılım olması nedeniyle kullanıcılar açısından iyi haber olduğu düşünülüyor

  • Bu teknolojinin Linux container'larını macOS uygulamalarına bundle etmek için kullanılıp kullanılamayacağını merak edenler var
    Örneğin GPT benzeri araçların root CLI komutları olmadan Linux ortamına erişmesini sağlamak gibi bir ihtiyaçtan söz ediliyor

    • Sadece macOS 26'da çalışması sorun değilse, tam da istenen amaç için hemen kullanılabileceği söyleniyor
      Alternatif olarak Virtualization.framework doğrudan kullanılarak da yapılabilir ama bunun için daha fazla ek çalışma gerekiyor

    • Bunun tam olarak bu amaç için çıkarılmış bir teknoloji olduğundan emin olunduğu söyleniyor

  • Her container'ın ayrı bir VM içinde çalışması, tam izolasyon ve bağımsız IP verilmesi gibi özellikler ilgi çekici ama bu tasarım Linux ya da Windows tarafında alışıldık değil
    Geliştirme ekibinde tek bir kişi bile Mac kullanmıyorsa yerel geliştirme modeli bozulabiliyor
    Sonuç olarak Docker/Compose'un yerini alması kolay görünmüyor

  • Üç büyük masaüstü işletim sisteminden ikisi artık resmi olarak Linux VM çalıştırıp Linux yerel uygulamalarını çalıştırabiliyor
    Bu gidişata bakınca Linux'un fiilen kazandığı söylenebilir
    Linux syscall API'si artık neredeyse her yerde çalışan evrensel bir API konumunda

    • Buna karşılık, Linux tabanlı uygulama geliştirmenin iki büyük Linux dışı işletim sistemi üzerinde düzgün biçimde yapılabiliyor olmasının tek başına "Linux'un zaferi" sayılmasının zor olduğunu savunan bir görüş de var
      Masaüstü Linux'un hâlâ istikrarsız ve önermesi güç bir durumda olduğuna dair kişisel deneyim paylaşılıyor
      Her yıl güncel bir PC ya da dizüstüne Fedora/Ubuntu kurmayı denediğini ama hâlâ kullanılabilirlik ve kararlılık hissi vermediğini dürüstçe söylüyor

    • Hatta diğer iki platformun, Linux'tan ayrılmadan onu kullanma yolları sunmasının masaüstünde Linux'un kendi pazar payı artışını daha da yavaşlattığı görüşü de var

    • Grafik, ses ve GUI tarafında hâlâ düzgün bir çözüm bulunmadığı da eksiler arasında sayılıyor

    • "Oyuna katılan tek oyuncu sensen gerçekten kazanmış sayılır mısın?" diye soruluyor
      Sıradan Windows ve Mac kullanıcılarına bunu anlatsanız çoğunun Linux'un ne olduğunu bile bilmeyeceği esprisi yapılıyor

    • "Linux ile birlikte gelen macOS" fikrinin tek başına etkileyici olduğu söyleniyor

  • Bellek yönetimini de optimize edip etmediklerini merak edenler var; yani VM'lerin gerekenden fazla bellek tüketmemesi gibi

  • Tam olarak hangi süreçten kaynaklandığını bilmiyorum ama build hızının fazla yavaş olduğu hissi var
    -c, -m seçenekleriyle CPU/bellek kaynağını artırmayı denedim ama etkisi pek hissedilmedi

    • Neyle kıyaslandığında yavaş olduğu soruluyor
      Geçmişte Apple Silicon Mac + Rancher Desktop kombinasyonunda x86 image'ı build ediyormuş gibi göründüğünü ama bu image'ların gerçek x86 donanımda düzgün çalışmadığını deneyimlediğini paylaşıyor
  • Kısa demoda (https://developer.apple.com/videos/play/wwdc2025/346) VM'in yüzlerce milisaniye içinde açılabildiği görülmesi etkileyici bulunuyor
    Bunun Virtualization.framework üzerinde çalıştığı, Docker Desktop/Colima/UTM gibi araçların da bunu isteğe bağlı olarak kullandığı belirtiliyor
    Birden fazla container paralel çalışırken bellek ek yükünün ne olacağı merak ediliyor

    • Optimize edilmiş Linux kernel ayarları (kernel config, https://github.com/apple/containerization/…), minimal root filesystem ve hafif bir init sistemi sayesinde container açılış süresinin 1 saniyenin altına indirildiği açıklanıyor