ECR: Konteyner İmajlarını Depolama ve Çekme
Docker imajlarını Amazon ECR'ye gönderin, eski imajları temizlemek için yaşam döngüsü ilkeleri uygulayın ve imajları ECS görevlerine güvenli şekilde çekin.
ECR: Konteyner İmajlarını Depolama ve Çekme, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
Amazon ECR Nedir
Amazon Elastic Container Registry (ECR), Docker ile uyumlu, tamamen yönetilen bir konteyner görüntüsü kayıt deposudur. Konteyner görüntülerini AWS içinde güvenli bir şekilde depolar, yönetir ve dağıtır. ECR, kendi kayıt deposu altyapınızı işletme gereksinimini ortadan kaldırır ve ECS, EKS, Lambda (konteyner görüntüleri) ve CodeBuild ile yerel olarak bütünleşir. ECR'de depolanan görüntüler yüksek kullanılabilirlik için çoğaltılabilir ve güvenlik açıkları açısından otomatik olarak taranabilir.
Özel ve Genel ECR Depoları
ECR iki depo türünü destekler: Amazon ECR'deki Özel depolar, görüntüleri çekmek için AWS kimlik doğrulaması gerektirir ve özel uygulama görüntüleri için idealdir. Erişim, IAM politikaları ve depo kaynak politikalarıyla denetlenir. ECR Public Gallery üzerindeki Genel depolar (public.ecr.aws), internet üzerindeki herhangi bir yerden kimlik doğrulaması olmadan çekmeye izin verir; açık kaynak temel görüntüleri, genel araçlar ve AWS tarafından sağlanan görüntüler (Lambda temel görüntüleri, ECS için optimize edilmiş AMI görüntüleri) için idealdir. Genel depolar, kimlik doğrulaması olmayan istekler için hız sınırlarıyla birlikte ücretsiz çekme kotasına sahiptir.
# Create a private ECR repository
aws ecr create-repository \
--repository-name 'myapp/backend' \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability IMMUTABLEDocker'ı ECR'ye Kimlik Doğrulama
Özel ECR görüntülerini göndermek veya çekmek için Docker, AWS kimlik bilgilerini kullanarak kimlik doğrulaması yapmalıdır. Geçici bir kimlik doğrulama belirteci almak için aws ecr get-login-password komutunu kullanın ve bu belirteci docker login komutuna yönlendirin. Belirteç 12 saat boyunca geçerlidir. CI/CD işlem hatlarında her gönderme işleminden önce belirteci yenileyin. ECS görev aracıları, Lambda ve EKS çalışan düğümleri, IAM rollerini kullanarak ECR'de otomatik olarak kimlik doğrulaması yapar; AWS ortamlarında çalışma zamanındaki çekme işlemleri için manuel oturum açmak gerekmez.
# Authenticate Docker CLI to ECR
aws ecr get-login-password --region us-east-1 | \
docker login \
--username AWS \
--password-stdin \
123456789012.dkr.ecr.us-east-1.amazonaws.comGörüntüleri ECR'ye Gönderme
Bir görüntüyü ECR'ye göndermek için standart iş akışı şöyledir: (1) Docker görüntüsünü yerel olarak Build edin; (2) görüntüyü ECR depo URI'siyle etiketleyin (biçim: account.dkr.ecr.region.amazonaws.com/repo-name:tag); (3) etiketlenmiş görüntüyü Push edin. ECR, her görüntü katmanını ayrı ayrı depolar ve görüntüler arasındaki ortak katmanların yinelenmesini önleyerek depolama maliyetlerini azaltır. Değiştirilemez etiketlerin kullanılması, bir etiketin üzerine yazılmasını önler ve dağıtılan görüntü sürümlerinin kararlı ve denetlenebilir olmasını sağlar.
# Build, tag, and push
docker build -t myapp/backend .
docker tag myapp/backend \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3
docker push \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3Görüntü Etiketi Değiştirilebilirliği
IMMUTABLE etiketler, bir etiketin farklı bir görüntüyle üzerine yazılmasını önler. Etiket değiştirilebilirliği IMMUTABLE olduğunda, mevcut bir etikete yeni bir görüntü gönderme işlemi başarısız olur; yeni bir etiket kullanmanız gerekir. Bu, üretim ortamları için en iyi uygulamadır: :v1.2.3 etiketinin her zaman tam olarak aynı görüntü özetini göstermesini sağlayarak güvenilir geri almaları ve denetimi mümkün kılar. MUTABLE etiketleri yalnızca geliştirme dalları veya üretim dışı ortamlardaki :latest kolaylık etiketi için kullanın.
Güvenlik Açıkları için Görüntü Tarama
Görüntüler gönderildiklerinde bilinen CVE'ler açısından otomatik olarak taransın diye gönderme sırasında taramayı etkinleştirin. ECR, Amazon Inspector bütünleştirmesini (gelişmiş tarama) veya açık kaynaklı Clair tarayıcısıyla desteklenen yerleşik Temel Taramayı kullanır. Gelişmiş tarama, yalnızca gönderme sırasında değil, sürekli tarama sağlar ve OS paketleriyle dile özgü paketleri (Node.js, Python, Java) kapsar. Tarama bulgularını ECR konsolunda veya EventBridge bildirimleri aracılığıyla güvenlik ekibinize gönderilen bildirimlerde inceleyin.
# Enable enhanced scanning for a registry
aws ecr put-registry-scanning-configuration \
--scan-type ENHANCED \
--rules '[{"repositoryFilters": [{"filter": "*", "filterType": "WILDCARD"}], "scanFrequency": "CONTINUOUS_SCAN"}]'Görüntü Maliyetlerini Yönetmek için Yaşam Döngüsü Politikaları
ECR, depolama için GB başına aylık ücret alır. Yönetim uygulanmadığında eski görüntüler süresiz olarak birikir ve maliyetleri artırır. Yaşam döngüsü politikaları, görüntüleri kurallara göre otomatik olarak süre sonuna ulaştırır ve siler: örneğin yalnızca son 10 etiketli sürümü tutabilir veya 7 günden eski etiketsiz görüntüleri silebilirsiniz. Yaşam döngüsü politikaları günlük olarak çalışır. Bu özellik, her gönderimde yeni görüntüler gönderen ve haftada yüzlerce görüntü biriktirebilen CI/CD işlem hatlarında özellikle önemlidir.
aws ecr put-lifecycle-policy \
--repository-name 'myapp/backend' \
--lifecycle-policy-text '{
"rules": [
{
"rulePriority": 1,
"description": "Keep last 10 tagged images",
"selection": {"tagStatus": "tagged", "tagPrefixList": ["v"], "countType": "imageCountMoreThan", "countNumber": 10},
"action": {"type": "expire"}
},
{
"rulePriority": 2,
"description": "Delete untagged images after 7 days",
"selection": {"tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 7},
"action": {"type": "expire"}
}
]
}'Hesaplar Arası Görüntü Erişimi
Account A'daki bir ECR deposundaki görüntüleri Account B'deki ECS/EKS/Lambda'ya çekmek için Account A'daki ECR deposunda bir depo politikası (kaynak tabanlı politika) yapılandırın ve Account B'deki IAM sorumlusuna ecr:GetDownloadUrlForLayer, ecr:BatchGetImage ve ecr:BatchCheckLayerAvailability çağrılarını yapma izni verin. Bu, görüntülerin hesaplar arasında kopyalanması gereksinimini ortadan kaldırır ve merkezi görüntü yönetimiyle dağıtılmış kullanımı mümkün kılar.
Çok Bölgeli Dağıtımlar için ECR Çoğaltma
ECR çoğaltma, görüntüleri birincil kayıt deponuzdan diğer AWS Bölgelerindeki (isteğe bağlı olarak diğer hesaplardaki) kayıt depolarına otomatik olarak kopyalar. Başka bir Bölgedeki ECS görevleri bir görüntüyü çektiğinde, görüntü yerel bölgesel kayıt deposundan çekilir; böylece veri aktarımı maliyetleri ve görüntü çekme gecikmesi azalır. Hangi depoların çoğaltılacağını ve hangi hedef bölgelerin ve hesapların kullanılacağını belirterek çoğaltma kurallarını kayıt deposu düzeyinde yapılandırın. Çoğaltma zaman uyumsuzdur ve gerçeğe çok yakın zamanda gerçekleşir.
aws ecr put-replication-configuration \
--replication-configuration '{
"rules": [{
"destinations": [
{"region": "eu-west-1", "registryId": "123456789012"},
{"region": "ap-southeast-1", "registryId": "123456789012"}
],
"repositoryFilters": [{"filter": "prod/*", "filterType": "PREFIX_MATCH"}]
}]
}'ECR Şifrelemesi
ECR, bekleyen görüntüleri sunucu tarafı şifrelemesi kullanarak şifreler. Varsayılan olarak AWS tarafından yönetilen bir anahtar (AWS_MANAGED_KEY) kullanır. Daha fazla denetim ve denetlenebilirlik için müşteri tarafından yönetilen bir KMS anahtarı (CMK) yapılandırın. CMK ile anahtar döndürme işlemini denetler, anahtarı devre dışı bırakarak erişimi iptal eder ve tüm şifre çözme işlemlerini CloudTrail'de denetleyebilirsiniz. Düzenlemelere uygunluk (PCI-DSS, HIPAA, FedRAMP) müşterinin denetimindeki şifreleme anahtarlarını gerektirdiğinde KMS şifrelemesini etkinleştirin.
CI/CD İşlem Hatlarında ECR'yi ECS ile Kullanma
ECR ile ECS için eksiksiz bir CI/CD işlem hattı şöyledir: (1) Geliştirici kodu Git'e gönderir; (2) CodeBuild Docker görüntüsünü oluşturur ve bunu bir gönderim SHA etiketiyle ECR'ye gönderir; (3) CodePipeline, ECS görev tanımını yeni görüntü URI'siyle günceller; (4) ECS, hizmeti aşamalı olarak günceller ve yeni görüntüyü ECR'den çeker. ECS görevleri, ECR'de otomatik olarak kimlik doğrulaması yapmak için Görev Yürütme Rolünü kullanır; çalışma zamanındaki çekme işlemleri için işlem hattında kimlik bilgilerini yönetmek gerekmez.
Hızlı Kontrol
Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: ECR özel depoları, IAM tarafından denetlenen erişim, üretim kararlılığı için değiştirilemez etiketler ve Inspector ile otomatik güvenlik açığı taramasıyla konteyner görüntülerini depolar. Lifecycle Policies, etkin CI/CD ortamlarında depolama maliyetlerini denetlemek için eski ve etiketsiz görüntülerin süresini otomatik olarak sona erdirir. ECR Replication, çok bölgeli dağıtımlarda çekme gecikmesini azaltmak için görüntüleri diğer Bölgelere ve hesaplara kopyalar. Sırada ECS Hizmeti Otomatik Ölçeklendirmesi ve yük dengeleme bütünleştirmesini inceleyeceğiz.
Sıkça Sorulan Sorular
“ECR: Konteyner İmajlarını Depolama ve Çekme” dersi ücretsiz mi?
Evet — “ECR: Konteyner İmajlarını Depolama ve Çekme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“ECR: Konteyner İmajlarını Depolama ve Çekme” dersinde ne öğreneceğim?
Docker imajlarını Amazon ECR'ye gönderin, eski imajları temizlemek için yaşam döngüsü ilkeleri uygulayın ve imajları ECS görevlerine güvenli şekilde çekin. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“ECR: Konteyner İmajlarını Depolama ve Çekme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- ECS Kümeleri, Görev Tanımları ve Hizmetler
- EC2 Başlatma Türü ve Fargate Karşılaştırması
- ECR: Konteyner İmajlarını Depolama ve Çekme
- ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme