Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Spostamento di un'immagine durante il suo ciclo di vita in Amazon ECR
Se utilizzi Amazon ECR per la prima volta, segui i passaggi seguenti con Docker CLI e poi AWS CLI per creare un'immagine di esempio, autenticarti nel registro predefinito e creare un repository privato. Quindi invia un'immagine e recupera un'immagine dal repository privato. Quando hai finito con l'immagine di esempio, elimina l'immagine campione e il repository.
Per utilizzare il AWS Management Console anziché il AWS CLI, consultaCreazione di un archivio ECR privato Amazon per archiviare immagini.
Prerequisiti
Se non disponi della versione più recente AWS CLI e di Docker installata e pronta all'uso, segui la procedura seguente per installare entrambi questi strumenti.
Installa il AWS CLI
Per utilizzarlo AWS CLI con AmazonECR, installa la AWS CLI versione più recente. Per informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente di AWS Command Line Interface .
Installa Docker
Docker è disponibile per diversi sistemi operativi, compresa la maggior parte delle distribuzioni Linux, ad esempio Ubuntu, e persino per macOS e Windows. Per ulteriori informazioni sull'installazione di Docker sul tuo specifico sistema operativo, consulta la guida all'installazione di Docker
Per l'utilizzo di Docker non è necessario un sistema di sviluppo locale. Se utilizzi EC2 già Amazon, puoi avviare un'istanza Amazon Linux 2023 e installare Docker per iniziare.
Se hai già installato Docker, passa a Fase 1: creazione di un'immagine Docker.
Per installare Docker su un'EC2istanza Amazon utilizzando Amazon Linux 2023 AMI
-
Avvia un'istanza con la versione più recente di Amazon Linux 2023AMI. Per ulteriori informazioni, consulta Launching an Instance nella Amazon EC2 User Guide.
-
Connettiti alla tua istanza. Per ulteriori informazioni, consulta Connect to Your Linux Instance nella Amazon EC2 User Guide.
-
Aggiorna i pacchetti installati e la cache dei pacchetti sulla tua istanza.
sudo yum update -y
-
Installa il pacchetto Docker Community Edition più recente.
sudo yum install docker
-
Avvia il servizio Docker.
sudo service docker start
-
Aggiungi
ec2-user
al gruppodocker
in modo da poter eseguire comandi Docker senza utilizzaresudo
.sudo usermod -a -G docker ec2-user
-
Esci e ripeti l'accesso per trovare il nuovo gruppo di autorizzazioni
docker
. Puoi farlo chiudendo la finestra corrente del SSH terminale e ricollegandoti all'istanza in una nuova. La nuova SSH sessione disporrà delle autorizzazioni didocker
gruppo appropriate. -
Verifica che
ec2-user
possa eseguire i comandi Docker senzasudo
.docker info
Nota
In alcuni casi, l'assegnazione delle autorizzazioni necessarie a
ec2-user
per accedere al daemon Docker può richiedere il riavvio dell'istanza. Prova a riavviare l'istanza se visualizzi questo errore:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Fase 1: creazione di un'immagine Docker
In questo passaggio, crei un'immagine Docker di una semplice applicazione Web e la testi sul tuo sistema locale o sull'EC2istanza Amazon.
Per creare un'immagine Docker di una semplice applicazione Web
-
Crea un file denominato
Dockerfile
. Un Dockerfile è un file manifest che descrive l'immagine di base da utilizzare per l'immagine Docker, nonché gli elementi da installare ed eseguire su di essa. Per ulteriori informazioni sui Dockerfile, consulta la documentazione di riferimento sui Dockerfile. touch Dockerfile
-
Modifica il
Dockerfile
appena creato e aggiungi i seguenti contenuti.FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
Questo Dockerfile utilizza l'immagine pubblica di Amazon Linux 2 ospitata su Amazon ECR Public. Le istruzioni
RUN
aggiornano le cache dei pacchetti, installano alcuni pacchetti software per il server Web e infine scrivono il contenuto "Hello World!" nella root del documento del server Web. L'istruzioneEXPOSE
espone la porta 80 nel container, mentre l'istruzioneCMD
avvia il server Web. -
Crea l'immagine Docker dal tuo Dockerfile.
Nota
In alcune versioni di Docker, il seguente comando potrebbe richiedere il percorso completo al Dockerfile anziché il percorso relativo mostrato di seguito.
docker build -t hello-world .
-
Elenca l'immagine del container.
docker images --filter reference=hello-world
Output:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 194MB
-
Esegui l'immagine appena creata. L'opzione
-p 80:80
mappa la porta 80 esposta sul container alla porta 80 sul sistema host. Per ulteriori informazioni sul comando docker run, consulta la documentazione di riferimento di Docker run. docker run -t -i -p 80:80 hello-world
Nota
L'output dal server Web Apache viene visualizzato nella finestra del terminale. Puoi ignorare il messaggio "
Could not reliably determine the fully qualified domain name
". -
Apri un browser e accedi al server su cui è in esecuzione Docker e che ospita il tuo container.
-
Se stai usando un'EC2istanza, questo è il DNS valore Public per il server, che è lo stesso indirizzo con cui ti connetti all'istanza. SSH Assicurati che il gruppo di sicurezza per l'istanza consenta il traffico in entrata sulla porta 80.
-
Se Docker è in esecuzione in locale, accedi con il browser a http://localhost/
. -
Se lo utilizzi docker-machine su un computer Windows o Mac, trova l'indirizzo IP della macchina VirtualBox virtuale che ospita Docker con il docker-machine ip comando, sostituendolo
machine-name
con il nome della macchina docker che stai utilizzando.docker-machine ip
machine-name
Visualizzerai una pagina Web con il tuo contenuto "Hello World!" dichiarazione.
-
-
Interrompi il container Docker digitando Ctrl+c.
Passaggio 2: creare un repository
Ora che hai un'immagine da inviare ad AmazonECR, devi creare un repository per conservarla. In questo esempio, viene creato un archivio denominato hello-repository
in cui successivamente inviare l'immagine hello-world:latest
. Per creare un repository, eseguire il comando seguente:
aws ecr create-repository \ --repository-name
hello-repository
\ --regionregion
Fase 3: Effettua l'autenticazione nel registro predefinito
Dopo aver installato e configurato il AWS CLI, autentica il Docker nel registro CLI predefinito. In questo modo, il docker comando può inviare ed estrarre immagini con AmazonECR. AWS CLI Fornisce un get-login-password comando per semplificare il processo di autenticazione.
Per autenticare Docker in un ECR registro Amazon con get-login-password, esegui il aws ecr get-login-password comando. Quando passi il token di autenticazione al docker login comando, usa il valore AWS
per il nome utente e specifica il ECR registro Amazon in URI cui desideri autenticarti. Se si esegue l'autenticazione a più registri, è necessario ripetere il comando per ogni registro di sistema.
Importante
Se viene visualizzato un errore, installare o eseguire l'upgrade alla versione più recente dell' AWS CLI. Per ulteriori informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente dell'AWS Command Line Interface .
-
get-login-password (AWS CLI)
aws ecr get-login-password --region
region
| docker login --username AWS --password-stdin
.dkr.ecr.aws_account_id
region
.amazonaws.com -
Ottieni- ECRLoginCommand ()AWS Tools for Windows PowerShell
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin
.dkr.ecr.aws_account_id
region
.amazonaws.com
Passaggio 4: invia un'immagine ad Amazon ECR
Ora puoi inviare la tua immagine al ECR repository Amazon che hai creato nella sezione precedente. Usa il docker CLI per inviare le immagini dopo aver soddisfatto i seguenti prerequisiti:
-
dockerÈ installata la versione minima di: 1.7.
-
Il token di ECR autorizzazione Amazon è stato configurato condocker login.
-
Il ECR repository Amazon esiste e l'utente può accedere al repository per inviarlo.
Dopo che tali prerequisiti sono stati soddisfatti, puoi inviare l'immagine al repository appena creato nel registro predefinito del tuo account.
Per taggare e inviare un'immagine ad Amazon ECR
-
Elencare le immagini memorizzate localmente per identificare l'immagine a cui aggiungere il tag e inviare.
docker images
Output:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
Aggiungere un tag all'immagine da inviare al tuo repository.
docker tag hello-world:latest
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository -
Invia l'immagine.
docker push
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository:latestOutput:
The push refers to a repository [
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE size: 6774
Fase 5: Estrarre un'immagine da Amazon ECR
Dopo aver inviato l'immagine al tuo ECR repository Amazon, puoi recuperarla da altre posizioni. Usa il docker CLI per estrarre le immagini dopo aver soddisfatto i seguenti prerequisiti:
-
dockerÈ installata la versione minima di: 1.7.
-
Il token di ECR autorizzazione Amazon è stato configurato condocker login.
-
Il ECR repository Amazon esiste e l'utente ha accesso per estrarlo dal repository.
Dopo che tali prerequisiti sono stati soddisfatti, si può estrarre l'immagine. Per estrarre l'immagine di esempio da AmazonECR, esegui il seguente comando:
docker pull
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository:latest
Output:
latest: Pulling from hello-repository 0a85502c06c9: Pull complete 0998bf8fb9e9: Pull complete a6785352b25c: Pull complete e9ae3c220b23: Pull complete Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE Status: Downloaded newer image foraws_account_id
.dkr.region
.amazonaws.com/hello-repository:latest
Fase 6: eliminazione di un'immagine
Se non hai più bisogno di un'immagine in uno dei tuoi repository, puoi eliminarla. Per eliminare un'immagine, specifica il repository in cui si trova e un imageDigest
valore imageTag
or per l'immagine. L'esempio seguente elimina un'immagine dal hello-repository
repository con il tag image. latest
Per eliminare l'immagine di esempio dal repository, esegui il comando seguente:
aws ecr batch-delete-image \ --repository-name hello-repository \ --image-ids imageTag=latest \ --region
region
Fase 7: eliminazione di un repository
Se non è più necessario un intero archivio di immagini, è possibile eliminarlo. L'esempio seguente utilizza il --force
flag per eliminare un archivio che contiene immagini. Per eliminare un repository che contiene immagini (e tutte le immagini in esso contenute), esegui il comando seguente:
aws ecr delete-repository \ --repository-name hello-repository \ --force \ --region
region