Containerization
Konteynerleştirme, bir uygulamayı çalışma zamanı, kitaplıkları ve ayarlarıyla birlikte ana işletim sisteminin çekirdeğini paylaşan yalıtılmış bir süreç olarak çalışan bir imajda paketler.
Kapsayıcılaştırma, bir uygulamanın çalışması için gereken çalışma ortamı, kitaplıklar, sistem paketleri ve yapılandırma dahil her şeyin, kapsayıcı adı verilen yalıtılmış bir süreç olarak çalışan bir imge içinde paketlenmesi yöntemidir. Her kapsayıcı kendi dosya sistemini, süreç ağacını ve ağ arayüzlerini görür; ana makinedeki tüm kapsayıcılar ise ana makinenin işletim sistemi çekirdeğini paylaşır. Bu, kapsayıcıları sanal makinelerden çok daha hafif kılar. Makine öğrenmesinde (ML) kapsayıcılaştırma, farklı Python, CUDA veya PyTorch sürümlerine ihtiyaç duyan projeler arasındaki çakışmaları ortadan kaldırır ve bir iş istasyonunda eğitilen modelin sunucuda, kümede veya uç bilişim cihazında değişiklik yapılmadan çalışmasını sağlar.
Kapsayıcılar Nasıl Çalışır#
Linux kapsayıcıları temel olarak iki çekirdek özelliğine dayanır. Ad alanları, bir sürecin neleri görebileceğini denetleyerek sürece kendi süreç kimliklerini, ağ yığınını, bağlama noktalarını ve kullanıcılarını verir. cgroups (kontrol grupları) ise CPU, bellek ve G/Ç kullanımını sınırlandırarak sürecin neleri kullanabileceğini denetler. Bu fikir 1979'daki chroot ve 2000'deki FreeBSD jail'lerinden gelişti; cgroups 2008'de Linux çekirdeğine eklendi ve Docker 2013'te kapsayıcıları yaygınlaştırdı. 2015'te kurulan Open Container Initiative (OCI), imge ve çalışma zamanı biçimlerini standartlaştırdı; böylece bir araçla oluşturulan imge başka bir araçta çalışabilir oldu.
İşi bir kapsayıcı çalışma zamanı yapar. containerd ve CRI-O gibi üst düzey çalışma zamanları imgeleri çeker ve kapsayıcıların yaşam döngülerini yönetir; runc gibi alt düzey bir OCI çalışma zamanı ise ad alanlarını ve cgroups'u oluşturup süreci başlatır. Linux kapsayıcıları bir Linux çekirdeğine ihtiyaç duyduğundan macOS ve Windows bunları küçük bir Linux sanal makinesinde çalıştırır.
İmgeler, Katmanlar ve Kayıt Defterleri#
Bir imge, çalıştırılacak komutu belirten bir yapılandırmanın yanı sıra salt okunur katmanlardan oluşan bir yığındır. Başlangıçta çalışma zamanı, genellikle OverlayFS kullanarak katmanları tek bir dosya sisteminde birleştirir ve kapsayıcı için ince bir yazılabilir katman ekler; böylece birçok kapsayıcı diskte imgenin tek bir kopyasını paylaşır. Docker Hub, GitHub Container Registry ve her bulut sağlayıcısının kayıt defteri gibi kayıt defterleri, imgeleri latest gibi etiketler ve her zaman aynı baytları tanımlayan SHA-256 içerik özetleri altında saklar. Derlemeler değişmeyen katmanları yeniden kullanır; bu nedenle Dockerfile'lar sık düzenlenen kodu kopyalamadan önce bağımlılıkları yükler:
ML İş Akışlarında Kapsayıcılaştırma#
MLOps hatlarında kapsayıcılar bir projeyi deneyden üretime taşır. NVIDIA NGC Kataloğu içindekiler gibi çerçeve görüntüleri CUDA, cuDNN ve çerçeve sürümlerini sabitler; böylece dağıtık eğitim işinin her düğümü aynı yazılımı çalıştırır. Ana makine yalnızca NVIDIA Container Toolkit'in kapsayıcıya sunduğu GPU sürücüsünü sağlar. Sürekli tümleştirme testleri daha sonra dağıtılacak görüntünün aynısı içinde çalışır; model sunumu için çıkarım sunucuları, Kubernetes'in trafiğe göre çoğaltıp ölçeklendirdiği görüntüler olarak çalışır. Uç yapay zekâ cihazları, örneğin NVIDIA Jetson kartları, yeni bir görüntü etiketini çekerek modeli günceller.
Kurumsal çalışma alanlarına yönelik Ultralytics Platform Şirket İçi entegrasyonu, gerektiğinde Docker'ı yükler ve ana makinenin ARM64, CPU veya NVIDIA GPU donanımına uygun resmî Ultralytics imgesinden tek bir çalışan kapsayıcı başlatır. Çalışan, veri kümesi klasörünü salt okunur olarak bağlar; böylece kaynak görseller o bilgisayarda kalırken eğitim ölçümleri ve her YOLO26 çalıştırmasının en iyi kontrol noktası Platform'a gönderilir.
Kapsayıcılar ve Sanal Makineler#
Sanal makine, hipervizör üzerinde kendi çekirdeğine sahip eksiksiz bir konuk işletim sistemi çalıştırır; bu nedenle her VM birkaç gigabaytlık bir işletim sistemi imgesi taşır ve ayrı bir bilgisayar gibi açılır. Kapsayıcı ise paylaşılan ana makine çekirdeğinde çalışan sıradan bir süreçtir; bu yüzden uygulaması kadar hızlı başlar ve yalnızca kendi dosyalarını ekler. Çekirdeğin paylaşılması, çekirdek güvenlik açığının ana makinedeki tüm kapsayıcıları açığa çıkarabileceği anlamına da gelir. Bu nedenle iki yaklaşım sıklıkla birlikte kullanılır: genel bulutlar müşteri kapsayıcılarını VM'lerde çalıştırır ve korumalı çalışma zamanları, yapay zekâ aracılarınca yazılıp aracı korumalı alanlarında çalıştırılanlar gibi güvenilmeyen kodlar için ikinci bir sınır ekler. Google'ın gVisor aracı, kapsayıcının sistem çağrılarını kendi kullanıcı alanı çekirdeğiyle yakalar. Kata Containers her kapsayıcıyı hafif bir sanal makinede çalıştırır; AWS ise AWS Lambda işlevlerini aynı şekilde yalıtmak için Firecracker mikro VM'lerini geliştirdi.










