Container Registry
- Okunuşu
- kınteynır recistri
Kısaca
Container registry, konteyner imajları için bir depolama ve dağıtım hizmetidir; ekipler derlenmiş imajları push eder, onları çalıştıran her sunucuya pull eder.
Container registry nedir?
Container registry, konteyner imajlarını saklayan ve talep üzerine dağıtan bir sunucudur. Bir derleme pipeline'ı bir imaj oluşturduktan sonra onu registry'ye push eder; bunu çalıştırması gereken her makine, örneğin bir Kubernetes node'u, daha sonra imajı oradan pull eder. Registry'ler herkesin imaj indirebildiği genel ya da yalnızca kimliği doğrulanmış kullanıcıların ve sistemlerin erişebildiği özel olabilir.
Bir registry içindeki imajlar myteam/web-app gibi repository'lerde düzenlenir ve her sürüm 1.4.0 ya da latest gibi bir etiketle (tag) işaretlenir. Her imajın ayrıca bir digest'i, yani içeriğinin SHA-256 hash'i vardır; bu, bir etiket sonradan başka bir imaja taşınsa bile imajı tam olarak tanımlar. Çoğu registry Open Container Initiative (OCI) dağıtım şartnamesine uyar; bu yüzden standart araçlar hepsine push edip hepsinden pull edebilir ve birçoğu imajları bilinen güvenlik açıkları için de tarar.
Container registry, sunucularınız için bir uygulama mağazası gibidir: geliştiriciler paketlenmiş yazılımı bir kez yayınlar ve her makine ihtiyaç duyduğu tam sürümü indirebilir. Registry'ler CI/CD pipeline'larının temel bir parçasıdır ve birçok kurum hız, erişim kontrolü ve genel registry'lerin kesintilerinden veya indirme sınırlarından korunmak için kümelerine yakın özel bir registry işletir.
İnsanlar sıklıkla registry, repository ve imajı birbirine karıştırır. Registry tüm hizmettir, repository onun içindeki ilişkili imajlardan oluşan adlandırılmış bir koleksiyondur, imaj ise bir etiket ya da digest ile tanımlanan belirli bir derlemedir. Container registry ayrıca, kaynak kodu saklayan bir Git repository'sinden de farklıdır; o koddan üretilen derlenmiş, çalıştırılabilir imajları saklamaz.
Önemli noktalar
- Registry, konteyner imajlarını saklar ve onları çalıştıran makinelere sunar.
- İmajlar repository'lerde gruplanır ve etiketlerle sürümlenir.
- Digest, bir imajın tam içeriğini tanımlar ve bir etiket gibi taşınamaz.
- Özel registry'ler kimin push ve pull yapabileceğini kontrol eder.
- Çoğu registry OCI dağıtım şartnamesine uyar.
Örnek
# Build an image and tag it with the registry address and version
docker build -t registry.example.com/myteam/web-app:1.4.0 .
# Log in and push the image to the registry
docker login registry.example.com
docker push registry.example.com/myteam/web-app:1.4.0
# On any other machine, pull the exact same image
docker pull registry.example.com/myteam/web-app:1.4.0
# Pin by digest for a fully reproducible deployment
docker pull registry.example.com/myteam/web-app@sha256:<digest>Sık sorulan sorular
Container registry ile repository arasındaki fark nedir?
Registry, imajları barındıran tüm hizmettir; repository ise onun içinde, o imajın etiketli farklı sürümlerini tutan ve myteam/web-app gibi adlandırılmış tek bir koleksiyondur.
Canlı ortamda neden latest etiketinden kaçınmalıyım?
latest etiketi, biri yeni bir imaj push ettiğinde yer değiştiren basit bir etikettir; bu yüzden iki sunucu aynı ad altında farklı kod çalıştırıyor olabilir. Belirli bir sürüm etiketi ya da digest kullanmak dağıtımları öngörülebilir ve geri alması kolay hale getirir.
Kendi container registry'mi çalıştırabilir miyim?
Evet. Açık kaynaklı registry sunucuları kendi altyapınızda barındırılabilir; çoğu bulut sağlayıcısı ve kod barındırma platformu da yerleşik erişim kontrolüne sahip yönetilen özel registry'ler sunar.
İlgili sayfalar
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- KonteynerDevOps ve Bulut, s. 28Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- RepositorySürüm Kontrolü, s. 34Repository, bir projenin tüm dosyalarını ve sürüm kontrol sisteminin kaydettiği her değişikliğin eksiksiz geçmişini barındıran depolama alanıdır.
- Semantic VersioningSürüm Kontrolü, s. 35Semantic versioning, her bölümün bir sürümün uyumluluğu bozduğunu, özellik eklediğini ya da hata düzelttiğini belirttiği MAJOR.MINOR.PATCH şemasıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin