Elastic Container Registry (ECR) instellen voor Docker op AWS

Amazon Elastic Container Registry (ECR) is een beheerde container registerdienst van AWS. Deze dienst is te vinden onder “Compute” op AWS Console. Dit wordt gebruikt om Docker Container Images op te slaan, te beheren en uit te zetten. ECR is geïntegreerd met Amazon Elastic Container Service (ECS).

Met ECR zijn er geen vooraf te betalen kosten. We betalen alleen voor de hoeveelheid gegevens die we in onze repositories opslaan en gegevens die naar het Internet worden overgebracht. Om meer te begrijpen over ECR facturering, klik hier.

Laten we, voor we verder gaan, een paar termen begrijpen die we later in dit artikel zullen zien.

Register: Het is een plaats waar we beeldbewaarplaatsen in kunnen aanmaken en beelden in kunnen opslaan.

Autorisatie token: Docker client moet zich authenticeren bij Amazon ECR registers als een AWS gebruiker voordat hij images kan pushen en pullen. Authenticatie token kunnen worden opgehaald van AWS CLI get-login commando geeft om aan Docker door te geven.

Repository: De image repository bevat Docker images. Het beleid van de repository

Afbeelding: We kunnen Docker images naar onze repositories pushen en pullen. We kunnen deze images lokaal op ons systeem gebruiken.

In dit artikel zullen we zien hoe je een ECR register, repository, aanmaakt, en de Docker afbeelding erheen duwt en er vandaan trekt. Ik zal proberen dit document zo eenvoudig mogelijk te houden, zodat wie hier nieuw in is niet veel moeite hoeft te doen om het te begrijpen.

Pre-requisites

  1. AWS Account (Maak aan als je er geen hebt)
  2. Ubuntu 18.04 Server of EC2 Ubuntu 18.04 Instance (Klik hier om een EC2 instance te leren maken als je er geen hebt of als je het wilt leren )
  3. Docker voorgeïnstalleerd op je systeem.

Wat zullen we doen?

  1. Log in op AWS.
  2. Maak een ECR Repository aan.
  3. Installeer AWS CLI op Linux Server.
  4. Authenticeer Docker client vanaf de Terminal en Tag & Upload het lokale Image naar de ECR Repository.
  5. Untag en Verwijder het Beeld van het lokale systeem en trek ECR Repo.

Log in op AWS

  1. Klik op hier om naar de AWS Login pagina te gaan.

Als we op de bovenstaande link klikken, zien we een webpagina als volgt waar we moeten inloggen met onze inloggegevens.

AWS Beheerconsole

Maak een ECR Repo

Om een ECR Repo te maken klik je op de pijl bij “Services” en je ziet een lijst van AWS Services.

Klik op “ECR” uit de lijst. Je kunt de gewenste regio kiezen. Hier ga ik verder met Parijs.

Maak een ECR Repo

Je ziet een scherm als volgt.

Klik op “Get Started” om je allereerste repo aan te maken.

Maak de eerste repo

Geef nu op het volgende scherm een naam die je wilt aan de repo die gemaakt moet worden.

Op hetzelfde scherm zie je twee opties beschikbaar.

  1. Tag Immutability:
    Deze functie voorkomt dat image tags overschreven worden door volgende image pushes die dezelfde tag gebruiken.
  2. Scan on Push:
    Met deze functie kunnen we scan on push inschakelen om elk beeld automatisch te laten scannen nadat het naar een archief gepushed is.

Voorlopig zullen we deze functies niet inschakelen.

Klik gewoon op “Create Repository” om verder te gaan.

Repository aanmaken

Nu kun je zien dat de repo klaar is voor gebruik.

Repository is klaar voor gebruik

Installeer AWS CLI op Linux Server

Je zult ook het commando “aws” op je systeem nodig hebben.

Om “aws” op Ubuntu systeem te installeren kun je gewoon de volgende commando’s typen

apt-get  update
apt-get  install awscli

installeer awscli

Authenticeer Docker client vanaf de terminal en Tag & Upload de bestaande Image naar ECR Repo.

Zodra we het “aws” commando op ons systeem hebben, moeten we Docker client authenticeren opons register en daarvoor moeten we een systeem hebben met Docker erop geïnstalleerd.

Je kunt de officiële pagina van Docker raadplegen om Docker op je systeem te installeren.

We kunnen de versie van Docker verifiëren met het commando “docker –version”.

Controleer de Docker versie

Voordat we Docker client authenticeren naar ons register moeten we onze aws_access_key_id en aws_secret_access_key exporteren.

Raadpleeg hiervoorAWS’s officiële documentatie om hier meer over te weten.

Gebruik de volgende commando’s om de vereiste sleutels te exporteren.

aws configure set aws_access_key_id YOUR_ACCESS_KEY
aws configure set aws_secret_access_key YOUR_SECRET_KEY
aws configure set default.region YOUR_DEFAULT_REGION
aws configure set default.output json

Als we deze waarden geëxporteerd hebben zijn we klaar omDocker client te authenticeren met ons register.

Klik eerst op de repo en dan op “View Push Commands”:

Push Commando's bekijken

We zien alle vereiste commando’s zodra we op “View Push Commands” klikken:

Push Commando's bekijken

Kopieer het eerste commando en voer het uit vanaf je systeem omDocker client te authenticeren naar ons register.

Get ECR Login

Laten we nu een image uit Docker Hub trekken dat we naar ECR Repo zullen pushen of zelf bouwen vanuit je Dockerfile. Hier zal ik apache/httpd image trekken en het dan pushen

docker pull httpd

Maak een lijst van de Images om de beschikbare images op het lokale systeem te zien.

docker images

Kopieer het tweede commando als je je eigen image wilt bouwen of ga naar het derde commando en voer het uit

docker tag <Image_Name>:<Tag> <ECR_Repo>:<TAG>

Hier is het,

docker tag httpd:latest 064827688814.dkr.ecr.eu-west-3.amazonaws.com/rahul-ecr-repo:latest

GEBRUIK dit adres NIET want ik heb de repo al verwijderd.

Nu zijn we klaar om het Beeld naar ECR te pushen.

Kopieer het vierde commando en voer het uit.

Dit zal het beeld met succes naar ECR Repo pushen.

duw het beeld naar ECR Repo

ECR Repo Overzicht

Ontlaad en verwijder het Beeld van het lokale systeem en haal het uit ECR Repo

We kunnen het lokale beeld verwijderen als je het niet meer nodig hebt.

docker rmi <Image_Name>

Hier staat het,

docker  rmo httpd

Op dezelfde manier kun je de gemerkte Image van het lokale systeem verwijderen.

Dan kun je proberen het Beeld uit de ECR repo te trekken.

Ga naar de repo en kopieer de URI van het Beeld:

docker  pull “IMAGE_URI”

haal het beeld uit de ECR repo

Conclusie

In dit artikel hebben we geleerd een ECR Repository aan te maken, in te loggen metDocker client, het lokale Beeld te taggen en het naar ECR Repo te pushen en hetzelfde te pullen.