deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Kern, rootless çekirdek destekli container'ları 1,5 MB'lık daemon'sız bir binary ile sunuyor

Hacker News'te öne çıkan açık kaynaklı bir Rust runtime, OCI imajlarından çekirdek destekli rootless container'ları yaklaşık 3,5 ms'de, arkasında daemon bulunmayan tek bir 1,52 MB'lık statik binary ile başlatıyor.

Kern, rootless çekirdek destekli container'ları 1,5 MB'lık daemon'sız bir binary ile sunuyor

Daemon'sız 1,5 MB'lık bir runtime

Kern, duyurusu Hacker News'in ana sayfasına ulaşan açık kaynaklı bir proje; bir container runtime'ı, bir sandbox'ı ve bir kaynak sınırlayıcıyı yaklaşık 1,5 MB'lık tek bir statik binary içinde topluyor — ve arkasında hiçbir daemon yok. Projenin GitHub deposuna göre binary, standart bir OCI imajından çekirdek destekli, rootless bir container'ı yaklaşık 3,5 ms'de başlatıyor ve çağrımlar arasında çalışan bir şey olmadığı için bekleme durumunda hiç bellek tüketmiyor.

Proje kendisini, sınırlı güvene rağmen çalıştırmayı seçtiğiniz iş yüklerine yönelik konumlandırıyor: agent araç çağrıları, CI işleri, build adımları ve kod hücreleri; AI tarafından üretilmiş kod dahil.

İzolasyon nasıl çalışıyor

Her container — kern bunlara box diyor — varsayılan olarak, opsiyonel bir seçenek olarak değil, rootless. İzolasyon; kullanıcı, PID, mount, ağ, UTS ve IPC namespace'lerini, bir overlay veya salt-okunur kök dosya sistemiyle, varsayılan olarak reddeden bir seccomp allowlist'iyle ve cgroup v2 sınırlarıyla birleştiriyor. Tek bir bayrak olan --security-profile untrusted, sertleştirilmiş paketi etkinleştiriyor: seccomp allowlist'i, tüm Linux yeteneklerinin düşürülmesi ve salt-okunur dosya sistemi; ağ ise açıkça istenmedikçe yok. Yoldaş bayrak --require-limits, bellek ve süreç sınırları gerçekten uygulanmıyorsa bir box'ı hiç başlatmayı reddediyor.

Dokümantasyon, bunun ne sağlamadığı konusunda alışılmadık derecede açık sözlü. Sınır Linux çekirdeğidir, bir hypervisor değil; dolayısıyla bir çekirdek yetki yükseltme hatası kaçış anlamına gelir — Docker ve Podman'ın da paylaştığı ve gVisor ile Firecracker'ın daha ağır yaklaşımlar benimseme nedeni olan bir durum. README'deki güvenlik notları ayrıca izolasyonun dayandığı mekanizma olan yetkisiz kullanıcı namespace'lerinin geçmişte çekirdek hatalarının verimli bir kaynağı olduğunu kabul ediyor. Mount'lar zorunlu kılınan sınırlar değil, güven kararları olarak ele alınıyor: ev dizininizi bind-mount etmek onu teslim etmek anlamına gelirken, --net host ve --privileged isimleriyle açıkça vazgeçme seçenekleridir. Proje, tasarımın başka kiracıların bulunduğu bir çekirdekte yabancıların düşmanca, çok kiracılı kodu için tasarlanmadığını düz bir şekilde belirtiyor.

Boyut bir tasarım tercihi

Tüm Rust bağımlılık ağacı libc'den ibaret. JSON ve OCI manifest'lar elle ayrıştırılıyor, imaj çekme işlemleri ise bir TLS yığınına bağlanmak yerine makinede zaten kurulu olan curl ve tar'a başvuruyor. Boyut için optimize edilmiş sürüm derlemesi 1,52 MB; kaynaktan normal bir derleme 1,91 MB geliyor ve README, i7-14700KF işlemcili bir masaüstünde 36 saniyelik bir derleme süresi bildiriyor.

Yalnızca box'lar değil, kaynaklar ve stack'ler de

Kaynak profilleri CPU, bellek, disk ve cihazları bir kern.toml içinde bir kez tanımlıyor ve box'lara isimle ekleniyor; aynı sınırlar, hiçbir sandbox olmadan sıradan bir ana makine sürecine de kern run aracılığıyla uygulanabiliyor. Stack'ler ya kern'ın kendi compose formatında ya da var olan bir docker-compose.yml dosyasından olduğu gibi okunarak çalışıyor; bir stack'teki servisler birbirlerine isimle ulaşabiliyor. README'deki demoda, önbellekleri ısınmış bir postgres-artı-adminer stack'i web katmanını yaklaşık 0,3 saniyede sunuyor ve yaklaşık 66 MB yer kaplıyor — Docker Desktop'ın container öncesi yükünün aksine, üstte arka plan VM'si yok.

Çekirdeğin çevresinde ps, logs, exec, stats, inspect, wait, top adlı canlı bir TUI ve bir doctor komutu ile agent'lar için Python ve Node SDK'ları ve bir MCP sunucusu bulunuyor. Her okuma komutu tablo yerine JSON çıktısı verebiliyor, böylece kimse terminal çıktısını ayrıştırmak zorunda kalmıyor.

Bilinçli sınırlar

Kern, Docker'ın dosya formatlarını konuşuyor ama API'sini değil: overlay ağ yok, plugin yok, Swarm yok. Bir Kubernetes runtime'ı değil — CRI desteği yok; bu rolü containerd veya CRI-O dolduruyor. GPU dilimleme yol haritasında ama henüz kod yok. Binary, yetkisiz kullanıcı namespace'leri ve cgroup v2 destekli bir Linux çekirdeğine ihtiyaç duyuyor; Linux, WSL2 ve Raspberry Pi ile Jetson gibi ARM kartlarında çalışıyor ve yerel bir Windows derlemesi yok. Sürümler x86_64 ve aarch64 binary'leri, bir Windows shim'i ve önceden hazırlanmış bir WSL rootfs'i içeriyor; her biri bir SHA256 sağlamasıyla geliyor; kurulum betiği doğrulamadan geçemeyen bir indirmeyi reddediyor ve sürüm etiketi GPG ile imzalanıp bağımsız olarak zaman damgalı.

Neden önemli

Çoğu container aracı, ilk container başlamadan önce yerleşik bir daemon — masaüstü platformlarında ise bir arka plan VM'si — varsayıyor. Kern'ın bahsi, bekleme durumunda sıfır ayak izi olan tek, denetlenebilir, yalnızca libc'li bir binary'nin sandbox'lı çalıştırmayı daha sık başvurulacak kadar ucuz kılması: ister CI adımları, ister agent araç çağrıları, ister bir ARM kartında atıl shell'ler için. Compose uyumluluğu geçiş maliyetini düşürüyor ve dokümantasyon, iddialarda bulunmadan önce tehdit modelinin sınırlarını açıklıyor. Ödünleşmeler gerçek — çekirdek düzeyinde izolasyon, bir kullanıcı namespace saldırı yüzeyi, hypervisor mertebesinde bir sınır yok — ama baştan bildiriliyorlar; bu da birçok runtime'ın sunabileceğinden fazlası.

  • #containers
  • #rust
  • #linux
  • #sandboxing
  • #open-source

İlgili yazılar