Lavorare con il servizio Amazon Elastic Container Registry in VS Code - AWSToolkit per VS Code

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

Lavorare con il servizio Amazon Elastic Container Registry in VS Code

È possibile accedere al servizio Amazon Elastic Container Registry (Amazon ECR) direttamente dalAWSEsplora in VS Code e usalo per inviare un'immagine del programma a un repository Amazon ECR. Per iniziare, è necessario eseguire le seguenti operazioni:

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

  2. Crea un'immagine da quel Dockerfile e tagga l'immagine per l'elaborazione.

  3. Crea un repository all'interno della tua istanza Amazon ECR.

  4. Invia l'immagine con tag al tuo repository.

Prerequisiti

Prima di poter utilizzare la funzione di servizio Amazon ECR del Toolkit for VS Code, devi soddisfare questi requisitiprerequisiti.

1. Creazione di un Dockerfile

Docker utilizza un file chiamato Dockerfile per definire un'immagine che può essere inviata e archiviata in un repository remoto. Prima di poter caricare un'immagine in un repository ECR, è necessario creare un Dockerfile e quindi creare un'immagine da quel Dockerfile.

Creazione di un Dockerfile
  1. Usa il Toolkit for VS Code explorer per accedere alla directory in cui desideri archiviare il tuo Dockerfile.

  2. Creare un nuovo file denominatoDockerfile.

    Nota

    VS Code potrebbe richiedere di selezionare un tipo di file o un'estensione di file. In questo caso, selezionatesto normale. Vs Code ha un'estensione «dockerfile». Tuttavia, non è consigliato l'uso. Questo perché l'estensione potrebbe causare conflitti con alcune versioni di Docker o altre applicazioni associate.

Modifica il tuo Dockerfile usando VS Code

Se il Dockerfile ha un'estensione file, aprire il menu contestuale per il file (clic con il pulsante destro del mouse) e rimuovere l'estensione.

Dopo aver rimosso l'estensione del file dal Dockerfile:

  1. Apri il Dockerfile vuoto direttamente in VS Code.

  2. Copia il contenuto del seguente esempio nel tuo Dockerfile:

    Esempio modello immagine di Dockerfile
    FROM ubuntu:18.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 Ubuntu 18.04. LaCORREREle istruzioni aggiornano le cache dei pacchetti. Installa i pacchetti software per il server Web e infine scrivi il contenuto «Hello World!» nella root del documento del server Web. LaESPORREl'istruzione espone la porta 80 sul container e ilCMDistruzione avvia il server Web.

  3. Salva il tuo Dockerfile.

    Importante

    Assicurati che il tuo Dockerfile non abbia un'estensione allegata al nome. Un Dockerfile con estensioni potrebbe causare conflitti con alcune versioni di Docker o altre applicazioni associate.

2. Crea la tua immagine dal tuo Dockerfile

Il Dockerfile creato contiene le informazioni necessarie per creare un'immagine per un programma. Prima di poter eseguire il push di quell'immagine nella tua istanza Amazon ECR, devi prima creare l'immagine.

Crea un'immagine dal tuo Dockerfile
  1. Usa l'interfaccia della riga di comando Docker o una CLI integrata con la tua istanza di Docker per navigare nella directory che contiene il tuo Dockerfile.

  2. Eseguirebuild Dockercomando per creare l'immagine definita nel Dockerfile.

    docker build -t hello-world .
  3. EseguireImmagini Dockercomando per verificare che la creazione dell'immagine sia andata a buon fine.

    docker images --filter reference=hello-world
    Esempio Output di esempio:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. Nota

    Questo passaggio non è necessario per creare o spingere la tua immagine, ma puoi vedere come funziona l'immagine del programma quando viene eseguita.

    Per eseguire l'immagine appena creata, utilizzare ilEsegui il Dockercomando.

    docker run -t -i -p 80:80 hello-world

    La-pl'opzione specificata nell'esempio precedente mappa l'oggetto espostoporta 80sul contenitore perporta 80del sistema host. Se stai eseguendo Docker localmente, vai ahttp://localhost:80utilizzando il tuo browser Web. Se il programma è stato eseguito correttamente, un «Hello World!» viene visualizzata l'istruzione.

    Per ulteriori informazioni suEsegui il Dockercomando, vedereriferimento di riferimento di riferimento disul sito Web Docker.

3. Creazione di un nuovo repository

Per caricare la tua immagine nella tua istanza Amazon ECR, crea un nuovo repository in cui possa essere archiviata.

Creazione di un nuovo repository Amazon ECR
  1. Dal codice VSBar delle attività, scegli ilAWSicona del Toolkit.

  2. Espandere il AWSEsploratoremenù.

  3. Individua il valore predefinitoAWSRegione associata al tuoAWSconto. Quindi, selezionalo per visualizzare un elenco dei servizi disponibili tramite il Toolkit for VS Code.

  4. SelezionaECR +opzione per iniziare ilCreazione di un nuovo repositoryprocesso.

  5. Segui le istruzioni per completare il processo.

  6. Una volta completata l'operazione, è possibile accedere al nuovo repository dal contenutoECRSezione dellaAWSMenu Explorer.

4. Invia, tira ed elimina immagini

Dopo aver creato un'immagine dal Dockerfile e creato un repository, puoi inserire la tua immagine nel tuo repository Amazon ECR. Inoltre, utilizzando ilAWSExplorer con Docker eAWSCLI, è possibile effettuare le seguenti operazioni:

  • Estrae un'immagine dal tuo repository.

  • Elimina un'immagine archiviata nel tuo repository.

  • Elimina il tuo repository.

Autentica Docker con il tuo registro predefinito

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

  1. Apri un sistema operativo da riga di comando connesso alla tua istanza diAWSCLIP.

  2. Utilizzo dell'get-login-passwordmetodo per autenticarsi nel registro ECR privato.

    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, è necessario aggiornare sia il contenutoregione laAWS_account_idalle informazioni specifiche per il tuoAWSconto.

Aggiungere un tag all'immagine e inviarla al tuo repository

Dopo aver autenticato Docker con l'istanza diAWS, invia un'immagine al tuo repository.

  1. Utilizzo dell'Immagini Dockercomando per visualizzare le immagini memorizzate localmente e identificare quella che si desidera etichettare.

    docker images
    Esempio Output di esempio:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Contrassegna la tua immagine con iltag Dockercomando.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. Invia l'immagine con tag al tuo repository con il contenutotag Dockercomando.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
    Esempio Output di esempio:
    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, è visibile nellaAWSMenu Explorer.

Estrae un'immagine da Amazon ECR
  • Puoi estrarre un'immagine nella tua istanza locale ditag Dockercomando.

    docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
    Esempio Output di esempio:
    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
Eliminazione di un'immagine dal repository Amazon ECR

Sono disponibili due metodi per eliminare un'immagine da VS Code. Il primo metodo consiste nell'utilizzare ilAWSExplorer.

  1. DaAWSExplorer, espandi laECRmenù

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

  3. Scegli il tag immagine associato all'immagine che desideri eliminare, aprendo il menu contestuale (tasto destro del mouse)

  4. SelezionaElimina il tag...opzione per eliminare tutte le immagini memorizzate associate a quel tag

Eliminazione di un'immagine utilizzando ilAWSCLI
  • È anche possibile eliminare un'immagine dal repository con il contenutoAWSecr batch-delete-imagecomando.

    AWS ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest
    Esempio Output di esempio:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Elimina un repository dalla tua istanza Amazon ECR

Esistono due metodi per eliminare un repository da VS Code. Il primo metodo consiste nell'utilizzare ilAWSExplorer.

  1. DaAWSExplorer, espandi laECRmenù

  2. Scegli il repository che desideri eliminare aprendo il menu contestuale (clic con il pulsante destro del mouse)

  3. SelezionaElimina repository...opzione al repository scelto

Eliminazione di un repository Amazon ECR dalAWSCLI
  • È possibile eliminare un repository con ilAWSecr delete-repositorycomando.

    Nota

    Per impostazione predefinita, non è possibile eliminare un repository che contiene immagini. Tuttavia, il--forceflag lo consente.

    AWS ecr delete-repository \ --repository-name hello-world \ --force
    Esempio Output di esempio:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }