Amazon ECR
Amazon Elastic Container Registry
Zarządzany rejestr obrazów kontenerów na AWS. Przechowuj, skanuj i wdrażaj obrazy Docker w pełni zintegrowane z ECS, EKS i Fargate.
Amazon ECR (Elastic Container Registry) to w pełni zarządzany rejestr obrazów kontenerów Docker i OCI. Działa jak prywatny Docker Hub zintegrowany z ekosystemem AWS - przechowujesz obrazy, skanujesz je pod kątem podatności i wdrażasz bezpośrednio do ECS, EKS czy Fargate.
ECR eliminuje konieczność utrzymywania własnego rejestru kontenerów. Obrazy są automatycznie szyfrowane, replikowane w ramach regionu i dostępne z minimalnym opóźnieniem dla serwisów AWS. Jeśli budujesz aplikacje kontenerowe na AWS - ECR to naturalne miejsce na Twoje obrazy.
ECR przechowuje obrazy w warstwach (layers). Jeśli masz 10 obrazów opartych na tym samym bazowym Alpine Linux, warstwa bazowa jest przechowywana tylko raz - oszczędzasz storage i przyspieszasz pobieranie.
Zawsze włączaj scanOnPush przy tworzeniu repozytorium. Kosztuje to niewiele, a automatycznie wykryjesz podatności w obrazach zanim trafią na produkcję. Dodaj lifecycle policy, żeby nie płacić za setki starych wersji obrazów.
Amazon Elastic Container Registry (ECR) to w pelni zarzadzany rejestr obrazow kontenerowych, zintegrowany z ECS, EKS i Lambda. ECR przechowuje, zarzadza i wdraza obrazy Docker (OCI). Oferuje skanowanie podatnosci, szyfrowanie at-rest, lifecycle policies do automatycznego czyszczenia starych obrazow oraz replikacje miedzy regionami. ECR eliminuje potrzebe utrzymywania wlasnego rejestru kontenerow.
Tworzenie repozytorium
Repozytorium ECR to logiczny kontener na obrazy Docker - analogicznie do repozytorium na Docker Hub. Kazde repozytorium ma unikalna nazwe w obrebie konta i regionu, np. my-app/backend. Przy tworzeniu konfigurujesz: tag immutability (czy tagi moga byc nadpisywane), skanowanie obrazow (manual lub scan on push), szyfrowanie (AES-256 domyslne lub KMS). URI repozytorium ma format: {account_id}.dkr.ecr.{region}.amazonaws.com/{repo_name}.
Konfiguracja lifecycle policies
Lifecycle policies automatycznie usuwaja stare obrazy wedlug zdefiniowanych regul, co kontroluje koszty przechowywania. Reguly moga byc oparte na: wieku obrazu (np. usun obrazy starsze niz 30 dni), liczbie obrazow (np. zachowaj ostatnie 10), statusie tagu (tagged vs untagged). Reguly sa ewaluowane w kolejnosci priorytetu. Typowa konfiguracja: usun untagged images po 1 dniu, zachowaj ostatnie 20 tagged images. Bez lifecycle policies repozytorium rosnie w nieskonczonosc.
Push obrazu (docker push)
Proces push wymaga trzech krokow: (1) autentykacja - aws ecr get-login-password | docker login, token jest wazny 12 godzin, (2) tagowanie obrazu URI repozytorium ECR - docker tag my-app:latest {ecr-uri}:latest, (3) push - docker push {ecr-uri}:latest. Kazdy push wysyla tylko warstwy (layers), ktorych jeszcze nie ma w rejestrze - dzieki deduplication transfer jest szybki. W CI/CD pipeline uzyj aws ecr get-login-password w kroku autentykacji i cache layers miedzy buildami.
Pull obrazu
Pull pobiera obraz z ECR do lokalnego srodowiska lub serwisu AWS. ECS, EKS i Lambda maja natywna integracje - wystarczy podac URI obrazu w definicji taska/poda. Dla EC2 lub lokalnego srodowiska potrzebna jest autentykacja docker login. ECR wspiera VPC Endpoints (PrivateLink) - pull z instancji w VPC nie przechodzi przez internet, co poprawia bezpieczenstwo i obniza koszty transferu. Pull jest bezplatny w obrebie tego samego regionu.
Skanowanie podatnosci
ECR oferuje dwa tryby skanowania: Basic scanning (darmowy, oparty na bazie CVE Clair - skanuje warstwy OS) i Enhanced scanning (platny, powered by Amazon Inspector - skanuje takze pakiety jezykowe: npm, pip, Maven). Scan on push automatycznie skanuje kazdy nowy obraz. Wyniki skanowania sa dostepne w konsoli, API i jako zdarzenia EventBridge - mozesz zbudowac pipeline, ktory blokuje deploy obrazow z krytycznymi podatnosciami.
Cross-region i cross-account replication
Replication rules automatycznie kopiuja obrazy do innych regionow lub kont AWS. Cross-region replication jest kluczowa dla disaster recovery i multi-region deployments - obraz pushowany w eu-west-1 automatycznie pojawia sie w us-east-1. Cross-account replication pozwala wspoldzielic obrazy miedzy kontami (np. dev -> staging -> prod) bez recznego kopiowania. Konfiguracja na poziomie rejestru (registry level), nie pojedynczego repozytorium.
Sprawdzone praktyki zarzadzania obrazami kontenerowymi w ECR - od lifecycle policies po strategie bezpieczenstwa i optymalizacje kosztow.
Lifecycle policies - kontroluj koszty przechowywania
Skonfiguruj lifecycle policies od pierwszego dnia - bez nich repozytorium rosnie bez limitu. Minimalna konfiguracja: usun untagged images po 1 dniu (to artefakty z nieudanych buildow) i zachowaj ostatnie N tagged images (np. 20-50 w zaleznosci od czestotliwosci deployow i potrzeby rollbacku). Dla srodowisk dev/staging agresywniejsze limity (10 obrazow), dla produkcji wiecej (30-50). Monitoruj koszt przechowywania w Cost Explorer - ECR kosztuje $0.10/GB/miesiac.
PoczatkujacyImmutable tags dla produkcji
Wlacz tag immutability na repozytoriach produkcyjnych. Zapobiega to nadpisaniu istniejacego tagu nowym obrazem - jezeli tag v1.2.3 juz istnieje, push z tym samym tagiem zostanie odrzucony. Bez immutability ktos moze przypadkowo nadpisac obraz produkcyjny, a rollback do tego samego tagu nie przywroci poprzedniej wersji. Uzywaj semantic versioning (v1.2.3) lub git SHA jako tagow. Tag latest nie powinien byc uzywany w produkcji.
PoczatkujacyECR Public dla open source
ECR Public Gallery (public.ecr.aws) to publiczny rejestr dla obrazow open source i wspoldzielonych. W przeciwienstwie do prywatnego ECR, obrazy sa dostepne bez autentykacji. Uzyj go do: publikowania narzedzi i bibliotek open source, wspoldzielenia base images w organizacji, udostepniania obrazow partnerom. ECR Public ma oddzielny pricing i limity transferu. Kazdy obraz ma URI w formacie public.ecr.aws/{alias}/{repo}:{tag}.
ZaawansowanyPull-through cache dla Docker Hub
Pull-through cache rules pozwalaja cachowac obrazy z Docker Hub (i innych publicznych rejestrow) w Twoim prywatnym ECR. Zamiast docker pull nginx, uzywasz {account}.dkr.ecr.{region}.amazonaws.com/docker-hub/nginx. Pierwszy pull pobiera z Docker Hub i cachuje w ECR, kolejne pull bierze z cache. Eliminuje to limity rate limiting Docker Hub (100 pulls/6h dla anonimowych, 200 dla zalogowanych) i przyspiesza buildy w CI/CD.
ZaawansowanyScan on push - automatyczne skanowanie
Wlacz scan on push na wszystkich repozytoriach - kazdy nowy obraz jest automatycznie skanowany pod katem podatnosci. Dla produkcji rozwaaz Enhanced scanning (Amazon Inspector) - skanuje nie tylko pakiety OS, ale takze zaleznosci jezykowe (npm, pip, Maven, Go modules). Zintegruj wyniki z EventBridge: zdarzenie ECR Image Scan Complete moze triggerowac Lambda, ktora blokuje deployment jezeli znajdzie podatnosci CRITICAL lub HIGH.
PoczatkujacyCross-account access z resource policies
Udostepnij repozytorium ECR innym kontom AWS przez resource-based policy na repozytorium. Typowy scenariusz: konto CI/CD builduje i pushuje obrazy, konta dev/staging/prod pulluja. Policy na repozytorium daje ecr:GetDownloadUrlForLayer, ecr:BatchGetImage i ecr:BatchCheckLayerAvailability kontom docelowym. Alternatywnie uzyj cross-account replication rules do automatycznego kopiowania obrazow do rejestrow w innych kontach.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon ECR bezposrednio w konsoli AWS.
Do czego sluzy Amazon ECR?
Pipeline CI/CD dla kontenerów
Builduj obrazy Docker w CodeBuild, pushuj do ECR i automatycznie wdrażaj na ECS/EKS przez CodePipeline.
Przechowywanie obrazów produkcyjnych
Centralne repozytorium obrazów dla wszystkich środowisk: dev, staging, produkcja. Z wersjowaniem i tagami.
Skanowanie bezpieczeństwa
Automatyczne skanowanie obrazów przy pushu - ECR wykrywa znane podatności (CVE) i raportuje ich poziom zagrożenia.
Udostępnianie obrazów publicznie
ECR Public Gallery pozwala publikować obrazy open-source dostępne dla wszystkich, jak na Docker Hub.
Co musisz wiedziec?
Repozytorium
Kontener na obrazy Docker o tej samej nazwie, ale różnych tagach/wersjach. Np. repozytorium "moja-aplikacja" z tagami :latest, :v1.0, :v1.1.
Obraz (Image)
Paczka zawierająca aplikację i wszystkie jej zależności. Identyfikowana przez digest (SHA256) i opcjonalnie tagi tekstowe.
Image Scanning
ECR skanuje obrazy pod kątem znanych podatności (CVE). Basic scanning jest darmowy, Enhanced scanning (przez Amazon Inspector) daje głębszą analizę.
Lifecycle Policy
Reguły automatycznego czyszczenia starych obrazów. Np. "usuń obrazy starsze niż 30 dni" lub "zachowaj tylko 10 najnowszych wersji".
Cross-Region Replication
Automatyczna replikacja obrazów do innych regionów AWS. Przydatne dla aplikacji multi-region i disaster recovery.
ECR Public
Publiczny rejestr obrazów dostępny pod gallery.ecr.aws. Alternatywa dla Docker Hub bez limitów pull rate.
Architektura: Amazon ECR w pipeline CI/CD kontenerow
Pipeline budowy i wdrazania obrazow kontenerowych, w ktorym ECR pelni role centralnego rejestru. Developer pushuje kod, CI/CD buduje obraz i pushuje do ECR, a serwisy compute pulluja gotowe obrazy. Skanowanie podatnosci generuje zdarzenia do EventBridge.
Ile kosztuje Amazon ECR?
Storage
Płacisz za przechowywanie obrazów w repozytoriach. Warstwy współdzielone między obrazami nie są liczone podwójnie.
$0.10/GB/mies. za prywatne repo
Transfer danych
Pobieranie obrazów do serwisów AWS w tym samym regionie jest darmowe. Transfer poza region jest płatny.
Pull z ECS/EKS w tym samym regionie: $0
ECR Public
Darmowy storage do 50 GB i 500 GB transferu miesięcznie dla anonimowych użytkowników.
50 GB storage + 500 GB transfer gratis
Przyklady AWS CLI
Zaloguj Docker do ECR
Uwierzytelnia Docker CLI z rejestrem ECR w Twoim koncie
aws ecr get-login-password --region eu-central-1 | \
docker login --username AWS --password-stdin \
123456789012.dkr.ecr.eu-central-1.amazonaws.com
Utwórz repozytorium
Tworzy nowe prywatne repozytorium z włączonym skanowaniem obrazów
aws ecr create-repository \
--repository-name moja-aplikacja \
--image-scanning-configuration scanOnPush=true \
--encryption-configuration encryptionType=AES256
Pushuj obraz do ECR
Taguje i pushuje lokalny obraz Docker do repozytorium ECR
docker tag moja-aplikacja:latest \
123456789012.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:latest
docker push \
123456789012.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:latest
Wylistuj obrazy w repozytorium
Pokazuje wszystkie obrazy z tagami i datami w danym repozytorium
aws ecr describe-images \
--repository-name moja-aplikacja \
--output table
Quiz: Amazon ECR
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Co robi Image Scanning w Amazon ECR?
2. Ile kosztuje pobieranie obrazów z ECR do ECS w tym samym regionie?
3. Do czego służy Lifecycle Policy w ECR?
Czesto uzywane razem z Amazon ECR
Chcesz poznac Amazon ECR w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon ECR krok po kroku. Teoria + praktyka od zera.