- 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
Hacker News görüşleri
En şaşırtıcı ve ilginç kısım olarak gördüğüm şeyi paylaşayım
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
containeraracı indirilerek doğrudan çalıştırılabiliyor (https://github.com/apple/container/releases), macOS 26 gerekiyorBu gönderi https://github.com/apple/containerization ile ilgili; yani
containerprojesiyle aynı şey değilcontainerization, uygulamaların bir container sidecar ile birlikte dağıtılması için tasarlanmış; bu yüzden daha ilginç bir haberBuna karşılık
container, geliştiricilerindocker run ...benzeri bir ortam kullanabilmesi için varcontainerile 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)
Bu yorumdan tam 1 dakika sonra prebuilt paketin yayımlandığı haberi paylaşılıyor (https://github.com/apple/container/releases/tag/0.1.0)
İlgili tartışma ayrı bir HN başlığında sürüyor (https://news.ycombinator.com/item?id=44229239)
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.frameworkdoğrudan kullanılarak da yapılabilir ama bunun için daha fazla ek çalışma gerekiyorBunun 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,-mseçenekleriyle CPU/bellek kaynağını artırmayı denedim ama etkisi pek hissedilmediGeç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ığı belirtiliyorBirden fazla container paralel çalışırken bellek ek yükünün ne olacağı merak ediliyor
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