Swift ile Açık Kaynak Docker Alternatifi Apple Container Nasıl Kullanılır

Mark Ponomarev

Mark Ponomarev

10 June 2025

Swift ile Açık Kaynak Docker Alternatifi Apple Container Nasıl Kullanılır

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.

💡
Harika API Dokümantasyonu oluşturan harika bir API Test aracı mı arıyorsunuz?

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!
button

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:

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:

Ç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.

💡
Harika API Dokümantasyonu oluşturan harika bir API Test aracı mı arıyorsunuz?

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!
button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin