6 puan yazan xguru 6 시간 전 | 3 yorum | WhatsApp'ta paylaş
  • Mac'te Linux konteynerlerini hafif sanal makineler biçiminde oluşturup çalıştıran bir araç
  • WWDC26'da yeni eklenen Container Machine, home dizini ile depoların otomatik olarak mount edildiği hızlı, hafif ve kalıcı bir Linux ortamı çalıştırabiliyor
  • Mevcut uygulama düzeyindeki konteynerlerden farklı olarak Linux ortamının tamamını modelliyor (WSL2'ye benzer)
  • İmajın init sistemini çalıştırarak uzun süre çalışan servisleri kaydetmek veya bir süreç yöneticisi altında uygulamaları test etmek mümkün
  • systemd yüklü imajlarda systemctl start postgresql gibi gerçek Linux servisleri çalıştırılabiliyor
  • Kullanıcı adı ve home dizinini otomatik eşleyerek depoların ve dotfile'ların hem macOS hem Linux tarafında paylaşılmasını sağlıyor
  • Depolar macOS $HOME altında bulunuyor ve içeride /Users/<username> konumuna mount ediliyor; macOS editörü ya da IDE ile düzenlerken içeride derleyip çalıştırmak mümkün
  • Profiler, tarayıcı, GUI debugger gibi macOS yerel araçları aynı dosyaları görüyor; derleme ile inceleme arasında kopyalama adımına gerek kalmıyor
  • alpine, ubuntu, debian gibi hedef dağıtım sayısı kadar Container Machine oluşturulabiliyor; her biri aynı $HOME ve dotfile'ları paylaştığı için farklı dağıtımlarda hızlı test yapılabiliyor
    • /sbin/init içeren herhangi bir Linux imajı doğrudan Container Machine imajı olarak kullanılabiliyor
  • OCI uyumlu konteyner imajlarını tüketip ürettiği için standart konteyner registry'lerinden Docker imajları da pull/push yapılabiliyor
    • Diğer OCI uyumlu uygulamalarda da bu imajlar çalıştırılabiliyor
    • Düşük seviyeli konteyner, imaj ve süreç yönetimi Containerization Swift paketine dayanıyor
  • Çalıştırmak için Apple silicon içeren bir Mac gerekiyor, macOS 26 üzerinde destekleniyor
    • macOS 26'daki yeni sanallaştırma ve ağ özellikleriyle iyileştirmelerden yararlanıyor; önceki macOS sürümleri desteklenmiyor
  • Apache-2.0 lisansı

Çalıştırma komutları

container machine create alpine:latest --name dev  
container machine run -n dev whoami       # your host username, not root  
container machine run -n dev pwd          # /home/<you> — your Mac home dir, mounted in  
container machine run -n dev              # interactive shell; cd into your repos in $HOME  
  
container machine ls                  # list all container machines  
container machine inspect dev         # JSON detail for one  
container machine stop dev            # stop the container machine  
container machine rm dev              # delete, including its persistent storage  
  
container machine set -n dev cpus=4 memory=8G  
container machine stop dev  
container machine run -n dev -- nproc  

WWDC26 tanıtım videosu - Container Machine'e göz atın

  • Containerization, WWDC 25'te açık kaynak olarak yayımlanan ve macOS'te Linux konteynerlerini çalıştırmanın temelini oluşturan bir Swift framework'ü
  • Her konteyner için sanal makine tabanlı izolasyon sağlayacak şekilde tasarlanmış; hafif sanal makineler sayesinde hızlı performans ve 1 saniyenin altında açılış süresi sunuyor
  • Container machine, Containerization üzerine inşa edilen yeni bir özellik; konteynerlerin kullanılabilirliği ve hızını sanal makinelerin kalıcılığıyla birleştiriyor, ayrıca entegrasyon özellikleri sayesinde Linux ortamının macOS'in bir uzantısı gibi hissettirmesini sağlıyor
  • Tasarım ilkeleri

    • Container machine, mevcut iş akışlarına entegre olabilmesi için hızlı ve hafif olmalı
    • macOS ile Linux arasında geçiş kolay olmalı
    • Kullanıcılar yeni ortamları hızlıca oluşturup özelleştirebilmeli; böylece birden çok proje, bağımlılık veya toolchain çakışması endişesi olmadan kendine özel ortamlara sahip olabilmeli
    • Geliştirme yaşam döngüsü boyunca gereken araçlar ve bağımlılıklar değişebileceği için, kalıcı bir ortamda araç eklemek ve bunları zaman içinde yeniden kullanabilmek mümkün olmalı
    • Birden fazla platformu hedefleyerek geliştirme yaparken büyük bir bağlam değişimi ya da yeni araçlar öğrenme ihtiyacı olmamalı

3 yorum

 
recast7838 22 분 전

Yeterli performans çıkar mı?

 
click 4 시간 전

Ne kadar baksam da bu, sanki WSL2’nin Mac sürümü gibi; host volume eşlerken I/O performansının ciddi şekilde düşmesi gibi bir durum olmaz mı acaba?
Şu anda da limactl ile VM üzerinde container çalıştırıyorum, çok da farklı değilmiş gibi geliyor bana.

 
GN⁺ 4 시간 전
Hacker News yorumları
  • Burada birkaç şeyi netleştireyim, bu sadece OCI container anlamına gelmiyor
    Container Machines kalıcılığı ve dosya sistemi mount etmeyi destekliyor, bu yüzden macOS kullanan geliştiriciler için harika bir hafif Linux ortamı oluyor
    Ayrıntılar burada: https://developer.apple.com/videos/play/wwdc2026/389

    • Aa, yani Linux için bir Darwin/BSD alt sistemi
  • OrbStack bana çok iyi uyuyor
    Performans açısından bununla karşılaştırınca nasıl olduğunu merak ediyorum

    • OrbStack geliştiricisiyim
      Virtualization.framework yerine, dosya sistemi paylaşımı gibi özellikler için özel aygıtlar ve protokoller içeren Rust tabanlı bir sanallaştırma yığınını doğrudan kullanıyoruz
      Linux makineleri ve container çalıştırma için özel olarak yüksek düzeyde optimize edilmiş, dikey entegre bir yığın bu
      En büyük performans/kaynak kazancı dinamik bellek; kullanılmayan belleği macOS'e geri vererek bellek kullanımını ciddi biçimde azaltıyor
      Containerization dahil diğerleri bunu desteklemiyor
      Container Machines'i deneyince, OrbStack makinelerinden çok varsayılan bind mount eklenmiş OCI container'lara daha yakın göründü
      Daha az entegrasyon özelliği var ve systemd ya da genel bir init sistemi çalıştırmadığı için servisleri çalıştırmak zor
    • OrbStack kavramsal olarak hoşuma gidiyor ama açık kaynak ve ücretsiz alternatifler çokken yıllık 96 dolarlık lisansı haklı çıkarmak zor bence
      Şimdilik Podman ya da Colima kullanmayı tercih ederim
    • https://tart.run/ ile karşılaştırmasını da görmek isterim
      Bana oldukça benzer görünüyor
    • Bu tam bir Docker ortamı değil, daha çok build amaçlı hedeflenmiş
      İsteğe bağlı olarak dockerd de çalıştırabiliyor ve https://github.com/cpuguy83/crucible Containerization framework ile buildkitd veya dockerd çalıştırıp sonra docker/buildx CLI ya da istediğiniz istemci aracıyla bağlanıyor
      Containerization framework, Virtualization framework üstüne kurulu bir kütüphane olduğu için her container kendi VM'idir
      Machine ise Containerization framework üzerinde, VM içindeki container üzerinde çeşitli işler çalıştıran bir araçtır
    • OrbStack'i gerçekten seviyorum, ama şu an neden onun yerine özellikle Container Machines kullanmam gerektiğini hâlâ pek anlamıyorum
  • Bu container'lar ortak bir kernel mi paylaşıyor? Yoksa her biri ayrı bir VM'de mi çalışıyor?
    Düzeltme: her container için bir VM var https://github.com/apple/container/blob/main/docs/technical-...

  • Apple container'ları AI kodlama ajanları için sandbox sağlamak adına iyi görünüyor
    Tüm kodlama ajanlarının kolayca keşfedebilmesi için bunu MCP olarak hazırladım
    https://github.com/instavm/coderunner

  • Container volume'lerini örneğin bir harici sürücüye taşımanın mümkün olup olmadığını merak ediyordum
    Şu anda QMEU ve qcow2 imajlarıyla bunu yapıyorum ve fena çalışmıyor

  • macOS'in neden WSL1 tarzı bir yaklaşımı denemediğini merak ediyorum
    Bunun Windows'ta neden tam başarıya ulaşmadığını anlıyorum ama macOS de başka bir *nix olduğu için, Windows'ta zor olan pek çok şey Mac'te daha kolay olabilir gibi geliyor
    Birkaç yeni API eklense Linux uygulamalarının çoğunu macOS üzerinde yerel olarak çalıştırmak mümkün görünüyor
    BSD'de aslında bunun bir örneği zaten var

    • Apple'ın zaten ihtiyaç duyduğu VM altyapısına göre bunun ne avantajı olurdu?
      Linux kerneline kıyasla ABI çok daha basit ve kararlı sonuçta
  • Bu, Docker Desktop benzerlerinin yerini alıp yanda çalışan pahalı bir Linux VM'ini ortadan kaldırabilir mi?

    • Benim de ilk aklıma gelen buydu
      Docker Desktop overhead'i oldukça yüksek, bu yüzden bunun DD'ye yerel olarak gelmesi güzel olurdu
      Docker'ın tarihsel olarak performansı iyileştirmeye çalışıp sonra platform sınırlarını hızla kabullenmek zorunda kaldığını düşününce mümkün görünüyor; DD'yi container tarafına taşımak da doğal bir adım gibi
    • Büyük paylaşılan arka plan VM'ini büyük ölçüde ortadan kaldırıp yerine daha küçük ve daha izole Apple yerel VM'leri koyuyor
      Podman iş yükümü Apple container'a taşımayı denedim: https://gist.github.com/jmonster/39e14585e107dbf990a90966c0f...
      Kısacası RAM/depolama kullanımı azalıyor ve sistemde neredeyse görünmez hâle geliyor
    • Burada başkaları da söylemiş ama ben yakın zamanda Colima'ya geçtim
      Docker Desktop'tan kaçınarak çalışmanın acısı büyük
    • Bu gerçekten harika olurdu
      Sanki birkaç günde bir rm -rf ~/.colima çalıştırıyorum
  • Apple'ın bunu yapacak kadar önem vermesi şaşırtıcı
    Yine de ben hâlâ Linux kullanmak isterim ama MacBook'un değeri gerçekten çok yüksek

    • Ben de her zaman Linux kullanmak isterim ama bazen şirket bana MacBook veriyor
      Bu aracı kullanabilirim
  • Apple'ın Linux container'larını öne çıkardığını her gördüğümde bunu yenilgiyi kabul etmekten başka türlü görmek zor
    Hâlâ yeterli kapasitesi olsaydı Darwin ile de bunu yapabilirdi

    • Apple, macOS'i özel mülk kod hâline getirmeye karar verdiği anda sunucu ve geliştirici pazarında kaybetmeye zemin hazırladı
      Ciddi bir geliştirici, özellikle production sunucuda, debug edip düzeltemeyeceği kapalı kaynak kodu neden kullansın?
      Ciddi geliştiricilerin ya da hacker'ların macOS kullanmamasının nedeni de aynı
      Geliştirici olmanın temel parçalarından biri, hangi katman olursa olsun kodun içine inip debug edebilmek ve düzeltebilmektir
    • İnternet tarihinin son 30 yılını değiştirmen yeterli
    • Alternatif ne olacaktı?
      Apple sunucu pazarından 10 yıl önce vazgeçti ve ondan önce de gerçekte neredeyse hiç desteği yoktu
      Darwin container desteği sunsa bile bunun ne anlamı olurdu ki? Kelimenin tam anlamıyla kimse onu hedefleyerek build almazdı; Linux kazandı
  • Bu yeni bir özellik mi?
    Zaten vardı sanıyordum
    Test ettiğimde, çok sayıda küçük dosyada stat yapan Node/Rust geliştirme ortamlarında dosya sistemi performansı kullanılabilir düzeyde değildi
    Güncelleme: yeni olan şey container machine alt komutu
    Denemeye çalıştım ama benim ortamımda container hiç çalışmadı: https://github.com/apple/container/issues/1681

    • OrbStack'i denedin mi diye merak ediyorum
      Hâlâ yapılacak işler var ama test edilecek iş yüklerine açığız
      OrbStack'in özel dosya sistemi paylaşım protokolünde küçük dosyaları ve yaygın geliştirici iş yüklerini optimize etmek için çok emek verdik
      Standart virtiofs değil
    • Bilgi olsun, Podman macOS'ta da çalışıyor
      Zaten mevcut olan container framework'ü kullanarak machine çalıştırıyor
      Hem root yetkili hem de rootless mod mümkün