Kapsayıcılar vazgeçilmez bir araç haline geldi. Taşınabilirlik, tutarlılık ve verimlilik sunarak geliştiricilerin uygulamaları farklı ortamlarda güvenilir bir şekilde oluşturmasına ve dağıtmasına olanak tanırlar. Yıllardır Docker, macOS'ta fiili standart olmuştur, ancak Apple'dan doğan yeni bir rakip, Apple Silicon'daki geliştiriciler için daha yerel, entegre ve akıcı bir deneyim sunmaya hazırlanıyor: container
.
container
, Apple'dan çıkan, Mac'inizde standart, OCI uyumlu Linux kapsayıcıları oluşturmanıza ve çalıştırmanıza olanak tanıyan yeni bir açık kaynak aracıdır. Tamamen Swift ile yazılmış ve Apple Silicon için optimize edilmiş olup, diğer kapsayıcı çalışma zamanlarına hafif, yüksek performanslı bir alternatif olarak tasarlanmıştır. Kapsayıcıları minimal, izole sanal makineler olarak çalıştırmak için macOS'un kendi sanallaştırma teknolojilerinden yararlanır, bu da daha iyi güvenlik ve daha küçük bir ayak izi vaat eder.
Bu makale, Apple'ın container
projesine derinlemesine bir bakış sunmaktadır. Mimarisi, temel faydaları ve ardından ilk kapsayıcılı uygulamanızı nasıl oluşturacağınız, çalıştıracağınız ve paylaşacağınız konusunda kapsamlı bir eğitimle ilerleyeceğiz. İster deneyimli bir backend geliştiricisi olun ister meraklı bir Mac kullanıcısı, bu heyecan verici yeni araçla başlamak için ihtiyacınız olan her şeyi bulacaksınız.
Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışabileceği entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun fiyata değiştirir!
Neden Yeni Bir Kapsayıcı Aracı? container
'ın Arkasındaki Vizyon
Yerleşik oyuncuların hakim olduğu bir ortamda, Apple neden kendi kapsayıcı aracını oluşturmaya karar verdi? Cevap, kendi donanım ve yazılımında derinlemesine entegre, performanslı ve geliştirici dostu bir deneyim vizyonunda yatıyor. container
sadece başka bir Docker klonu değil; kapsayıcılaştırmanın bir Mac'te ne olabileceğinin yeniden tasavvurudur.
Apple Silicon'da Yerel Performans
Daha ağır Linux sanal makinelerine veya çapraz platform uyumluluk katmanlarına dayanan diğer çözümlerin aksine, container
Apple Silicon için sıfırdan inşa edilmiştir. Doğrudan Apple'ın yerel Virtualization.framework
ile konuşan bir Swift uygulamasıdır. Bu, önemli bir performans avantajı sağlar. Çalışma zamanının kendisi için Rosetta 2 gibi bir emülasyon katmanı yoktur ve her kapsayıcı kendi hafif VM'sinde çalışır, tam teşekküllü bir sanal makine başlatmanın süresinin çok küçük bir kısmında önyükleme yapar.
Benzersiz Güvenli Bir Mimari
Güvenlik, container
tasarımının temel taşıdır. Teknik genel bakış, önemli bir mimari kararı ortaya koyar: tüm kapsayıcıları tek, paylaşılan bir Linux VM'sinde çalıştırmak yerine, container
*her* kapsayıcı için özel, minimal bir mikro-VM başlatır.
Bu "kapsayıcı başına bir VM" modeli, sağlam donanım düzeyinde izolasyon sağlar. Kapsayıcısından kaçan bir işlem, kendisini diğer kapsayıcılara erişimi olan paylaşılan bir ortamda değil, ağır kısıtlanmış, tek amaçlı bir VM içinde bulur. Bu, potansiyel saldırı yüzeyini önemli ölçüde azaltır ve geliştirme ortamınızın genel güvenlik duruşunu iyileştirir.
OCI Uyumluluğu: Diğerleriyle İyi Anlaşmak
Benzersiz mimarisine rağmen, container
açık standartları tamamen benimser. Open Container Initiative (OCI) uyumlu imajları tüketir ve üretir. Bu kritik bir özelliktir, çünkü tescilli bir ekosisteme kilitlenmediğiniz anlamına gelir. Docker Hub'dan standart bir imaj çekebilir, container
ile çalıştırabilir, yeni bir imaj oluşturabilir ve GitHub Container Registry (ghcr.io) gibi herhangi bir OCI uyumlu kayıt defterine geri gönderebilirsiniz. container
ile oluşturduğunuz imajlar, diğer araçlarda ve üretim CI/CD işlem hatlarında sorunsuz çalışacaktır.
Derin macOS Entegrasyonu
container
, macOS üzerinde iyi bir vatandaştır. Sorunsuz bir kullanıcı deneyimi sağlamak için temel sistem teknolojileriyle entegre olur:
- Sanallaştırma ve Ağ İletişimi: Verimli VM ve ağ yönetimi için
Virtualization.framework
vevmnet
kullanır. - Hizmet Yönetimi:
container-apiserver
arka plan programı, macOS'ta hizmetleri yönetmenin standart yolu olanlaunchd
tarafından yönetilir. - Güvenlik: Kayıt defteri kimlik bilgilerini güvenli bir şekilde depolamak için Anahtar Zinciri hizmetlerinden yararlanır.
- Günlük Kaydı: macOS birleşik günlük kaydı sistemiyle entegre olur, böylece tüm teşhis çıktısı tanıdık bir yerdedir.
Kaputun Altında: Hızlı Bir Teknik Derin Dalış
container
komut satırı aracı (container
), bir arka plan sunucu işlemi olan container-apiserver
ile iletişim kuran bir istemcidir. container system start
komutuyla başlattığınız bu sunucu her şeyi yönetir.
container run
gibi bir komut verdiğinizde, API sunucusu o belirli kapsayıcı için özel bir çalışma zamanı yardımcısı (container-runtime-linux
) başlatır. Bu yardımcı da sırayla, kapsayıcınızın işlemlerini barındıran yeni, minimal bir Linux VM'sini döndürmek için Virtualization.framework
kullanır. Bu mimari zarif, sağlam ve güvenlik ve performans için tasarlanmıştır.
Yeni bir proje olarak container
'ın bazı sınırlamaları olduğunu belirtmek önemlidir. Modern bir macOS sürümü (macOS 15, en iyi performans en son macOS 26 Beta 1'de) gerektirir. Kapsayıcılar ve ana bilgisayar arasındaki ağ iletişimi bazı özel geçici çözümlere sahiptir ve bellek şişirme gibi gelişmiş özellikler hala geliştirilme aşamasındadır. Ancak, temel sağlamdır ve proje hızla gelişmektedir.
container
Nasıl Kullanılır: Adım Adım Eğitim
Ellerimizi kirletelim. Bu eğitim, bir kapsayıcının tüm yaşam döngüsü boyunca size rehberlik edecektir: basit bir web sunucusu için bir imaj oluşturma, çalıştırma, onunla etkileşim kurma ve yayınlama.
Adım 1: Kurulum ve Ayarlar
İlk olarak, gereksinimleri karşıladığınızdan emin olun: Apple Silicon Mac ve yakın tarihli bir macOS sürümü.
container
'ı Kurun: Projenin GitHub yayın sayfasından en son imzalı yükleyici paketini indirin. .pkg
dosyasına çift tıklayın ve kurulum istemlerini izleyin.
Hizmeti Başlatın: Terminalinizi açın ve container
sistem hizmetlerini başlatın.
container system start
Bunu ilk çalıştırdığınızda, muhtemelen varsayılan bir Linux çekirdeği indirmenizi ve kurmanızı isteyecektir. Devam etmek için y
yazın ve Enter tuşuna basın.
Kurulumu Doğrulayın: Şu anda hiç olmaması gereken tüm mevcut kapsayıcıları listeleyerek hizmetin çalıştığını kontrol edin.
container ls -a
# Boş başlıklar görmelisiniz:
# ID IMAGE OS ARCH STATE ADDR
Adım 2: İlk İmajınızı Oluşturma
Şimdi, basit bir Python web sunucusu için bir kapsayıcı imajı oluşturalım.
Bir Proje Dizini Oluşturun:
mkdir web-test
cd web-test
Bir Dockerfile
Oluşturun: web-test
dizininin içinde, aşağıdaki içeriğe sahip Dockerfile
(veya Containerfile
) adlı bir dosya oluşturun. Bu dosya, imajımız için "tarifi" tanımlar.
# Hafif bir Python temel imajından başlayın
FROM docker.io/python:alpine
# Kapsayıcı içindeki çalışma dizinini ayarlayın
WORKDIR /content
# Test için 'curl' yardımcı programını ekleyin
RUN apk add curl
# Basit bir HTML dosyası oluşturun
RUN echo '<!DOCTYPE html><html><head><title>Kapsayıcıdan Merhaba</title></head><body><h1>Merhaba, Apple Kapsayıcısı!</h1></body></html>' > index.html
# Kapsayıcı başladığında çalıştırılacak komut
CMD ["python3", "-m", "http.server", "80", "--bind", "0.0.0.0"]
İmajı Oluşturun: Şimdi, container
'a Dockerfile
'ınızdan bir imaj oluşturmasını söyleyin. Onu web-test
adıyla etiketleyeceğiz.
container build --tag web-test --file Dockerfile .
Sondaki .
, oluşturucuya mevcut dizini bağlam olarak kullanmasını söyler.
İmajlarınızı Listeleyin: Oluşturma tamamlandıktan sonra, yeni imajınızı yerel imaj deposunda görebilirsiniz.
container images list
# `web-test` imajınızı ve `python:alpine` temel imajını görmelisiniz.
# NAME TAG DIGEST
# python alpine b4d299311845...
# web-test latest 25b99501f174...
Adım 3: Kapsayıcınızı Çalıştırma
İmajımız oluşturulduğuna göre, onu çalıştıralım.
Web Sunucusunu Çalıştırın: web-test
imajınızdan bir kapsayıcı başlatmak için container run
komutunu kullanın.
container run --name my-web-server --detach --rm web-test
Bu bayrakları inceleyelim:
-name my-web-server
: Kapsayıcımıza akılda kalıcı bir ad verir.-detach
(veyad
): Kapsayıcıyı arka planda çalıştırır.-rm
: Kapsayıcı durduğunda kaydını otomatik olarak kaldırır, böylece düzenli kalır.
Çalışan Kapsayıcıyı Kontrol Edin: Aktif kapsayıcıları listeleyin.
container ls
my-web-server
kapsayıcınızı running
durumunda, ADDR
sütununda atanan IP adresiyle birlikte göreceksiniz (örn. 192.168.64.3
).
Web Sunucunuza Erişin: Bir web tarayıcısı açın ve önceki adımda gösterilen IP adresine gidin. "Merhaba, Apple Kapsayıcısı!" mesajınızı görmelisiniz.
# IP'yi `container ls` çıktısındaki ile değiştirin
open <http://192.168.64.3>
Adım 4: Kapsayıcıyla Etkileşim Kurma
container
, çalışan kapsayıcılarınızla etkileşim kurmak için güçlü araçlar sağlar.
Bir Komut Çalıştırın: container exec
kullanarak doğrudan kapsayıcı içinde komutlar çalıştırabilirsiniz. Web sunucumuzun içerik dizinindeki dosyaları listeleyelim.
container exec my-web-server ls /content
# Çıktı: index.html
Etkileşimli Bir Kabuk Açın: Daha karmaşık hata ayıklama için, kapsayıcı içinde etkileşimli bir kabuk alabilirsiniz.
container exec -it my-web-server sh
-it
bayrakları (--interactive
ve --tty
), terminalinizi kapsayıcı içindeki kabuğa bağlamak için çok önemlidir. Kapsayıcınızın WORKDIR
içinde bir kabuk istemine düşeceksiniz. Etrafa bakabilir, işlemleri kontrol edebilir ve ardından Mac'inizin terminaline dönmek için exit
yazabilirsiniz.
Adım 5: İmajınızı Yayınlama
Çalışmanızı paylaşmak kolaydır. İmajımızı bir kapsayıcı kayıt defterine gönderelim. Bu örnek Docker Hub'ı kullanır, ancak herhangi bir OCI kayıt defteri çalışacaktır. (Bu, fido
kullanıcı adına sahip bir Docker Hub hesabınız olduğunu varsayar).
Kayıt Defterine Giriş Yapın:
# Kullanıcı adınız ve şifreniz/token'ınız istenecek
container registry login docker.io
Yayınlamak İçin İmajı Etiketleyin: Kayıt defterleri, imajların registry/username/image:tag
formatında adlandırılmasını gerektirir. İmajımız için yeni bir etiket oluşturalım.
container images tag web-test docker.io/fido/web-test:latest
İmajı Gönderin:
container images push docker.io/fido/web-test:latest
İmajınız artık herhangi bir OCI uyumlu platformda başkalarının çekmesi ve çalıştırması için kullanılabilir!
Adım 6: Temizlik
İşiniz bittiğinde, kapsayıcıyı durdurabilir ve hizmeti kapatabilirsiniz.
# Kapsayıcıyı durdur
container stop my-web-server
# Tüm kapsayıcı hizmetlerini durdur
container system stop
Temellerin Ötesinde
Eğitim temel iş akışını kapsar, ancak container
daha fazlasını yapabilir. İşte how-to.md
belgelerinden birkaç özellik:
Kaynak Yönetimi: Kapsayıcılarınıza ayrılan kaynakları kontrol edebilirsiniz. Bellek yoğun yapılar için, oluşturucuya daha fazla RAM ve CPU verebilirsiniz:
container builder start --cpus 8 --memory 16g
Dosya Paylaşımı: Ana bilgisayarda kod düzenlemek ve değişiklikleri kapsayıcıda canlı görmek istediğiniz geliştirme iş akışları için gerekli olan -volume
bayrağını kullanarak Mac'inizden bir dizini kapsayıcıya bağlayabilirsiniz.
container run --volume ${HOME}/my-project:/app my-image
Çok Platformlu Yapılar: Hem Apple Silicon (arm64
) hem de Intel (amd64
) mimarilerinde çalışan imajları tek bir komutla oluşturabilirsiniz, bu da çeşitli sunucu ortamlarına dağıtım için mükemmeldir.
container build --arch arm64 --arch amd64 --tag my-multi-arch-image .
Gelişmiş İnceleme: container inspect
komutu, kapsayıcılar ve imajlar hakkında ayrıntılı JSON bilgisi sağlar, bu da betikleme ve otomasyon için kullanışlıdır.
Sonuç
Apple'ın container
'ı sadece yeni bir araçtan daha fazlası; bir ifadedir. Bulut tabanlı geliştirmenin modern çağı için birinci sınıf, entegre geliştirici araçları sağlama taahhüdünün sinyalini verir. Hafif, güvenli ve performanslı bir kapsayıcı çalışma zamanını doğrudan işletim sistemine entegre ederek, Apple Mac'te kapsayıcılaştırma için giriş engelini düşürüyor ve mevcut çözümlere çekici bir alternatif sunuyor.
Proje hala genç olsa da, temeli sağlam, mimarisi sağlam ve açık standartlara bağlılığı, daha geniş kapsayıcı ekosisteminde değerli bir oyuncu olmasını sağlıyor. Eğer bir Apple Silicon Mac'te geliştiriciyseniz, container
bugün izlemeniz ve denemeniz gereken bir projedir.
Geliştirici Ekibinizin maksimum üretkenlikle birlikte çalışabileceği entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun fiyata değiştirir!