Utilizzo del servizio Amazon Elastic Container Registry in AWS Cloud9 - AWS Cloud9

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

Utilizzo del servizio Amazon Elastic Container Registry in AWS Cloud9

Puoi accedere al servizio Amazon Elastic Container Registry (Amazon ECR) direttamente da AWS Explorer in IDE. AWS Cloud9 È possibile utilizzare Amazon ECR per inviare un'immagine di programma in un repository Amazon ECR. Per iniziare, attieniti alla seguente procedura:

  1. Crea un Dockerfile che contenga le informazioni necessarie per creare un'immagine.

  2. Crea un'immagine dal Dockerfile e assegna un tag all'immagine per l'elaborazione.

  3. Crea un repository all'interno dell'istanza Amazon ECR.

  4. Invia l'immagine al repository.

Prerequisiti

Prima di poter utilizzare la funzionalità Amazon ECR del AWS Toolkit for AWS Cloud9, assicurati di soddisfare prima questi prerequisiti. Questi prerequisiti sono preinstallati nell' AWS Cloud9 IDE per ambienti Amazon AWS Cloud9 EC2 e sono necessari per accedere ad Amazon ECR.

1. Creazione di un Dockerfile

Docker utilizza un file denominato Dockerfile per definire un'immagine che può essere inviata e archiviata su un repository remoto. Prima di poter caricare un'immagine in un repository ECR, crea un Dockerfile e quindi crea un'immagine dal Dockerfile.

Creazione di un Dockerfile
  1. Per accedere alla directory in cui desideri archiviare il Dockerfile, scegli l'opzione Toggle Tree (Alterna struttura) nella barra di navigazione a sinistra all'interno dell'IDE AWS Cloud9 .

  2. Crea un nuovo file denominato Dockerfile.

    Nota

    AWS Cloud9 L'IDE potrebbe richiedere di selezionare un tipo o un'estensione di file. In tal caso, selezionate testo in chiaro. AWS Cloud9 IDE ha un'estensione «dockerfile». Tuttavia, lo sconsigliamo. Questo perché l'estensione potrebbe causare conflitti con determinate versioni di Docker o altre applicazioni associate.

Modifica del tuo Dockerfile usando IDE AWS Cloud9

Se il Dockerfile ha un'estensione di file, aprire il menu contestuale (clic con il pulsante destro del mouse) del file e rimuovere l'estensione. Un Dockerfine con estensioni potrebbe causare conflitti con determinate versioni di Docker o altre applicazioni associate.

Dopo aver rimosso l'estensione del file dal Dockerfile:

  1. Apri il Dockerfile vuoto direttamente nell'IDE. AWS Cloud9

  2. Copiare il contenuto del seguente esempio nel Dockerfile.

    Esempio Modello di immagine Dockerfile
    FROM ubuntu:22.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Questo è un Dockerfile che utilizza un'immagine di Ubuntu 22.04. Le istruzioni RUN aggiornano le cache dei pacchetti. Installare i pacchetti software per il server Web, quindi scrivere 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. Salvare il Dockerfile.

2. Creazione dell'immagine dal Dockerfile

Il Dockerfile creato contiene le informazioni necessarie per creare un'immagine per un programma. Prima di poter inviare l'immagine all'istanza Amazon ECR, è necessario prima crearla.

Creazione di un'immagine dal Dockerfile
  1. Per navigare nella directory che contiene il Dockerfile, usare la CLI Docker o una CLI integrata con l'istanza di Docker.

  2. Per creare l'immagine definita nel Dockerfile, eseguire il comando Docker build dalla stessa directory del Dockerfile.

    docker build -t hello-world .
  3. Per verificare che l'immagine sia stata creata correttamente, eseguire il comando Docker images.

    docker images --filter reference=hello-world

    L'output è il seguente.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. Per eseguire l'immagine appena creata basata su Ubuntu 22.04, usa il comando echo.

    Nota

    Questa fase non è necessaria per creare o inviare l'immagine. Tuttavia, è possibile vedere come funziona l'immagine del programma durante l'esecuzione.

    FROM ubuntu:22.04 CMD ["echo", "Hello from Docker in Cloud9"]

    Quindi, eseguire e creare il dockerfile. È necessario eseguire questo comando dalla stessa directory del dockerfile.

    docker build -t hello-world . docker run --rm hello-world

    L'output è il seguente.

    Hello from Docker in Cloud9

    Per ulteriori informazioni sul comando Docker run, consultare Docker run reference sul sito web di Docker.

3. Creazione di un nuovo repository

Per caricare l'immagine nell'istanza Amazon ECR, creare un nuovo repository in cui possa essere archiviata.

Creazione di un nuovo repository Amazon ECR
  1. Dalla barra di navigazione AWS Cloud9 IDE, scegli l'icona AWS Toolkit.

  2. Espandere il menu di AWS Explorer.

  3. Individua Regione AWS l'impostazione predefinita associata al tuo Account AWS. Quindi, selezionalo per visualizzare un elenco dei servizi disponibili tramite l' AWS Cloud9 IDE.

  4. Aprire il menu contestuale (clic con pulsante destro del mouse) per l'opzione ECR per avviare il processo di creazione di un nuovo repository. Selezionare quindi Create Repository (Crea repository).

  5. Per completare il processo, seguire le istruzioni a video.

  6. Una volta completato il processo, puoi accedere al nuovo repository dalla sezione ECR del menu AWS Explorer.

4. Invio, estrazione ed eliminazione di immagini

Dopo aver creato un'immagine dal Dockerfile e creato un repository, è possibile inserire l'immagine nel repository Amazon ECR. Inoltre, utilizzando AWS Explorer con Docker e la AWS CLI, puoi fare quanto segue:

  • Estrarre un'immagine dal repository.

  • Eliminare un'immagine archiviata nel repository.

  • Eliminare il repository.

Autenticazione di Docker con il registro predefinito

L'autenticazione è necessaria per lo scambio di dati tra istanze Amazon ECR e istanze Docker. Per autenticare Docker nel registro:

  1. Apri un terminale all'interno del tuo AWS Cloud9 IDE.

  2. Usa il get-login-passwordmetodo per autenticarti nel tuo registro ECR privato e inserisci la tua regione e Account AWS il tuo ID.

    aws ecr get-login-password \ --region <region> \ | docker login \ --username AWS \ --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
    Importante

    Nel comando precedente, sostituire region e AWS_account_id con informazioni specifiche del proprio Account AWS. Un valore valido di region è us-east-1.

Assegnazione e invio di tag a un'immagine nel repository

Dopo aver autenticato Docker con l'istanza di AWS, inserisci un'immagine nel tuo repository.

  1. Usa il comando docker images per visualizzare le immagini che hai archiviato localmente e identificare quella che desideri taggare.

    docker images

    L'output è il seguente.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Assegnare tag all'immagine Docker con il comando Docker tag.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. Inviare l'immagine con tag al repository con il comando Docker push.

    Importante

    Assicurati che il nome del tuo repository locale sia lo stesso del tuo repository AWS Amazon EC2. In questo esempio, è necessario denominare entrambi i repository hello-world. Per ulteriori informazioni sull'invio di immagini con docker, consultare Invio di un'immagine Docker.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    L'output è il seguente.

    The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774

Dopo che l'immagine con tag è stata caricata correttamente nel tuo repository, aggiorna il AWS Toolkit scegliendo Refresh Explorer dalla scheda Explorer. AWS È quindi visibile nel menu AWS Explorer di IDE. AWS Cloud9

Estrazione di un'immagine da Amazon ECR
  • È possibile estrarre un'immagine nell'istanza locale del comando tag Docker.

    docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    L'output è il seguente.

    azonaws.com/hello-world:latest latest: Pulling from hello-world Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
Eliminazione di un'immagine dal repository Amazon ECR

Esistono due metodi per eliminare un'immagine dall' AWS Cloud9 IDE. Il primo metodo consiste nell'utilizzare AWS Explorer.

  1. Da AWS Explorer, espandi il menu ECR.

  2. Espandere il repository da cui si desidera eliminare un'immagine.

  3. Aprire il menu contestuale (clic con il pulsante destro del mouse) per il tag di immagine associato all'immagine che si desidera eliminare.

  4. Per eliminare tutte le immagini archiviate associate a quel tag, scegliere Delete Tag... (Elimina tag...).

Eliminazione di un'immagine utilizzando la CLI AWS
  • Puoi anche eliminare un'immagine dal tuo repository con il AWS comando ecr. batch-delete-image

    aws ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest

    L'output è il seguente.

    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Eliminazione di repository dall'istanza Amazon ECR

Esistono due metodi per eliminare un repository dall'IDE. AWS Cloud9 Il primo metodo consiste nell'utilizzare Explorer: AWS

  1. Da AWS Explorer, espandi il menu ECR.

  2. Aprire il menu contestuale (clic con il pulsante destro del mouse) del repository che si desidera eliminare.

  3. Scegliere Delete Repository... (Elimina repository...).

Eliminazione di un repository Amazon ECR dalla CLI AWS
  • È possibile eliminare un repository con il comando AWS ecr delete-repository.

    Nota

    Normalmente non è possibile eliminare un repository senza prima eliminare le immagini in esso contenute. Tuttavia, se si aggiunge il flag --force, è possibile eliminare un repository e tutte le sue immagini in un'unica fase.

    aws ecr delete-repository \ --repository-name hello-world \ --force

    L'output è il seguente.

    --repository-name hello-world --force { "repository": { "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", "registryId": "922327013870", "imageTagMutability": "MUTABLE", "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", "repositoryName": "hello-world", "createdAt": 1664469874.0 } }