Spostamento di un'immagine durante il suo ciclo di vita in Amazon ECR - Amazon ECR

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 repository privato Amazon ECR per archiviare immagini.

Per ulteriori informazioni sugli altri strumenti disponibili per la gestione AWS delle risorse, inclusi i diversi AWS SDKs IDE toolkit e gli strumenti da riga di PowerShell comando di Windows, consulta http://aws.amazon.com/tools/.

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
  1. Avvia un'istanza con la versione più recente di Amazon Linux 2023AMI. Per ulteriori informazioni, consulta Launching an Instance nella Amazon EC2 User Guide.

  2. Connettiti alla tua istanza. Per ulteriori informazioni, consulta Connect to Your Linux Instance nella Amazon EC2 User Guide.

  3. Aggiorna i pacchetti installati e la cache dei pacchetti sulla tua istanza.

    sudo yum update -y
  4. Installa il pacchetto Docker Community Edition più recente.

    sudo yum install docker
  5. Avvia il servizio Docker.

    sudo service docker start
  6. Aggiungi ec2-user al gruppo docker in modo da poter eseguire comandi Docker senza utilizzare sudo.

    sudo usermod -a -G docker ec2-user
  7. 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 di docker gruppo appropriate.

  8. Verifica che ec2-user possa eseguire i comandi Docker senza sudo.

    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
  1. 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
  2. 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'istruzione EXPOSE espone la porta 80 nel container, mentre l'istruzione CMD avvia il server Web.

  3. 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 .
  4. 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
  5. 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".

  6. 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.

  7. 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 \ --region region

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 aws_account_id.dkr.ecr.region.amazonaws.com
  • Ottieni- ECRLoginCommand ()AWS Tools for Windows PowerShell

    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.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
  1. 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
  2. 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
  3. Invia l'immagine.

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

    Output:

    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 for aws_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