Cloud & IT Cert Prep · Lektion

ECR: Lagring og hentning af containerafbildninger

Push Docker-afbildninger til Amazon ECR, anvend livscykluspolitikker til at rydde gamle afbildninger op, og hent afbildninger sikkert til ECS-opgaver

Lektion 3 af 413 trin

ECR: Lagring og hentning af containerafbildninger er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad er Amazon ECR?

Amazon Elastic Container Registry (ECR) er et fuldt administreret Docker-kompatibelt register til containerafbildninger. Det lagrer, administrerer og udruller containerafbildninger sikkert i AWS. ECR eliminerer behovet for at drive din egen registerinfrastruktur og integreres naturligt med ECS, EKS, Lambda (containerafbildninger) og CodeBuild. Afbildninger, der lagres i ECR, replikeres for høj tilgængelighed og kan automatisk scannes for sikkerhedssårbarheder.

Private og offentlige ECR-lagre

ECR understøtter to lagertyper: Private lagre i Amazon ECR kræver AWS-godkendelse for at hente afbildninger—ideelt til proprietære applikationsafbildninger. Adgang styres af IAM-politikker og ressourcepolitikker for lagre. Offentlige lagre i ECR Public Gallery (public.ecr.aws) tillader hentning uden godkendelse fra alle steder på internettet—ideelt til open source-basisafbildninger, offentlige værktøjer og AWS-leverede afbildninger (Lambda-basisafbildninger, ECS-optimerede AMI-afbildninger). Offentlige lagre har en gratis kvote for hentninger med hastighedsbegrænsninger for anmodninger uden godkendelse.

# Create a private ECR repository
aws ecr create-repository \
  --repository-name 'myapp/backend' \
  --image-scanning-configuration scanOnPush=true \
  --image-tag-mutability IMMUTABLE

Godkendelse af Docker til ECR

For at pushe eller hente private ECR-afbildninger skal Docker godkende sig med AWS-legitimationsoplysninger. Brug aws ecr get-login-password til at hente et midlertidigt godkendelsestoken, og send det via en pipe til docker login. Tokenet er gyldigt i 12 timer. I CI/CD-pipelines skal du forny tokenet før hvert push. ECS-opgaveagenter, Lambda og EKS-arbejdernoder godkender automatisk adgang til ECR ved hjælp af deres IAM-rolle—der kræves ikke manuelt login ved hentning under kørsel i AWS-miljøer.

# 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.com

Push af afbildninger til ECR

Den almindelige arbejdsgang til at pushe en afbildning til ECR er: (1) Byg Docker-afbildningen lokalt; (2) Tag afbildningen med URI'en til ECR-lageret (format: account.dkr.ecr.region.amazonaws.com/repo-name:tag); (3) Push den taggede afbildning. ECR lagrer hvert afbildningslag separat og deduplikerer fælles lag på tværs af afbildninger, hvilket reducerer lageromkostningerne. Brug af uforanderlige tags forhindrer overskrivning af et tag og sikrer, at udrullede afbildningsversioner er stabile og kan auditeres.

# 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.3

Ændringsmulighed for afbildningstags

IMMUTABLE-tags forhindrer, at et tag overskrives med en anden afbildning. Når taggenes ændringsmulighed er IMMUTABLE, mislykkes push af en ny afbildning til et eksisterende tag—du skal bruge et nyt tag. Dette er en god praksis i produktion: Det sikrer, at :v1.2.3 altid henviser til præcis den samme afbildningsdigest, så du får pålidelige tilbagerulninger og kan udføre revision. Brug kun MUTABLE-tags til udviklingsgrene eller det praktiske :latest-tag i ikke-produktionsmiljøer.

Scanning af afbildninger for sårbarheder

Aktivér scan on push for automatisk at scanne afbildninger for kendte CVE'er, når de pushes. ECR bruger integrationen med Amazon Inspector (udvidet scanning) eller den indbyggede Basic Scanning, der anvender open source-scanneren Clair. Udvidet scanning giver kontinuerlig scanning (ikke kun ved push) og dækker OS-pakker samt sprogspecifikke pakker (Node.js, Python, Java). Gennemgå scanningsfund i ECR-konsollen eller via EventBridge-notifikationer til dit sikkerhedsteam.

# Enable enhanced scanning for a registry
aws ecr put-registry-scanning-configuration \
  --scan-type ENHANCED \
  --rules '[{"repositoryFilters": [{"filter": "*", "filterType": "WILDCARD"}], "scanFrequency": "CONTINUOUS_SCAN"}]'

Livscykluspolitikker til styring af omkostninger til afbildninger

ECR opkræver betaling for lagerplads pr. GB pr. måned. Uden administration ophobes gamle afbildninger ubegrænset, hvilket øger omkostningerne. Livscykluspolitikker udløber og sletter automatisk afbildninger baseret på regler: Du kan for eksempel beholde kun de seneste 10 taggede udgivelser eller slette afbildninger uden tags, der er ældre end 7 dage. Livscykluspolitikker køres dagligt. Dette er særligt vigtigt i CI/CD-pipelines, der pusher nye afbildninger ved hver commit, da de kan ophobe hundredvis af afbildninger om ugen.

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"}
      }
    ]
  }'

Adgang til afbildninger på tværs af konti

For at hente afbildninger fra et ECR-lager i konto A til ECS/EKS/Lambda i konto B skal du konfigurere en lagerpolitik (en ress基ebaseret politik) på ECR-lageret i konto A, som giver IAM-principal'en fra konto B tilladelse til at kalde ecr:GetDownloadUrlForLayer, ecr:BatchGetImage og ecr:BatchCheckLayerAvailability. Det eliminerer behovet for at kopiere afbildninger mellem konti og muliggør centraliseret afbildningsadministration med distribueret brug.

ECR-replikering til udrulninger i flere regioner

ECR-replikering kopierer automatisk afbildninger fra dit primære register til registre i andre AWS-regioner (og eventuelt andre konti). Når ECS-opgaver i en anden region henter en afbildning, henter de den fra det lokale regionale register—hvilket reducerer omkostningerne til dataoverførsel og forsinkelsen ved hentning af afbildninger. Konfigurer replikeringsregler på registerniveau, og angiv hvilke lagre der skal replikeres, samt destinationsregioner og -konti. Replikering er asynkron og sker næsten i realtid.

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-kryptering

ECR krypterer afbildninger i hvile ved hjælp af serversidekryptering. Som standard bruger tjenesten en AWS-administreret nøgle (AWS_MANAGED_KEY). Du får yderligere kontrol og mulighed for revision ved at konfigurere en kundeadministreret KMS-nøgle (CMK). Med en CMK styrer du nøgle-rotationen, kan tilbagekalde adgang ved at deaktivere nøglen og kan revidere alle dekrypteringshandlinger i CloudTrail. Aktivér KMS-kryptering, når lovgivningsmæssig overholdelse (PCI-DSS, HIPAA, FedRAMP) kræver kundekontrollerede krypteringsnøgler.

Brug af ECR med ECS i CI/CD-pipelines

En komplet CI/CD-pipeline til ECS med ECR: (1) Udvikleren pusher kode til Git; (2) CodeBuild bygger Docker-afbildningen og pusher den til ECR med et commit-SHA-tag; (3) CodePipeline opdaterer ECS-opgavedefinitionen med den nye afbildnings-URI; (4) ECS udfører en rullende opdatering af tjenesten og henter den nye afbildning fra ECR. ECS-opgaver bruger Task Execution Role til automatisk at godkende adgang til ECR—der skal ikke administreres legitimationsoplysninger i pipelinen ved hentning under kørsel.

Hurtigt tjek

Test din forståelse af AWS Solutions Architect-koncepterne (SAA-C03) fra denne lektion.

Opsummering af lektionen

I denne lektion har du lært, at private ECR-lagre lagrer containerafbildninger med IAM-kontrolleret adgang, uforanderlige tags for stabilitet i produktion og automatisk sårbarhedsscanning med Inspector; livscykluspolitikker udløber automatisk gamle afbildninger og afbildninger uden tags for at styre lageromkostningerne i aktive CI/CD-miljøer; og ECR-replikering kopierer afbildninger til andre regioner og konti, så du får udrulninger i flere regioner med lavere forsinkelse ved hentning. Dernæst udforsker vi automatisk skalering af ECS-tjenester og integration med belastningsfordeling.

Gratis at komme i gang

Lær Cloud & IT Cert Prep med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
150
Lektioner
600

Ofte stillede spørgsmål

Er lektionen “ECR: Lagring og hentning af containerafbildninger” gratis?

Ja — hele teksten til “ECR: Lagring og hentning af containerafbildninger” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “ECR: Lagring og hentning af containerafbildninger”?

Push Docker-afbildninger til Amazon ECR, anvend livscykluspolitikker til at rydde gamle afbildninger op, og hent afbildninger sikkert til ECS-opgaver Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?

Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “ECR: Lagring og hentning af containerafbildninger”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?

Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. ECS-klynger, task definitions og services
  2. EC2-starttype kontra Fargate
  3. ECR: Lagring og hentning af containerafbildninger
  4. Automatisk skalering og belastningsfordeling af ECS-tjenester
← Tilbage til Cloud & IT Cert Prep