Creazione di un'immagine di container da utilizzare su Amazon ECS - Amazon Elastic Container Service

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

Creazione di un'immagine di container da utilizzare su Amazon ECS

Amazon ECS utilizza le immagini Docker nelle definizioni di attività per avviare i container. Docker è una tecnologia che fornisce gli strumenti per costruire, eseguire, testare e implementare applicazioni distribuite basate su container.

Lo scopo dei passaggi descritti qui è guidarti nella creazione della tua prima immagine Docker e nel suo invio ad Amazon ECR, che è un registro del container, per utilizzarla nelle definizioni delle attività Amazon ECS. Questa procedura guidata presuppone una conoscenza di base di Docker e del suo funzionamento. Per ulteriori informazioni su Docker, vedi Cos'è Docker? e la documentazione Docker.

Prerequisiti

Prima di iniziare, verifica che siano soddisfatti i seguenti requisiti preliminari:

Se non disponi o non hai bisogno di un ambiente di sviluppo locale e preferisci utilizzare un' EC2 istanza Amazon per usare Docker, forniamo i seguenti passaggi per avviare un' EC2 istanza Amazon utilizzando Amazon Linux 2 e installare Docker Engine e Docker CLI.

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 Creazione di un'immagine Docker.

Per installare Docker su un' EC2 istanza Amazon utilizzando un'AMI Amazon Linux 2023
  1. Avvia un'istanza con l'ultima AMI Amazon Linux 2023. Per ulteriori informazioni, consulta Avviare un' EC2 istanza utilizzando la procedura guidata di avvio dell'istanza nella console nella Amazon EC2 User Guide.

  2. Connettiti alla tua istanza. Per ulteriori informazioni, consulta Connect to your EC2 istance 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. A questo scopo, puoi chiudere la finestra del terminale SSH corrente e riconnetterti all'istanza in una nuova finestra. La nuova sessione SSH avrà le autorizzazioni del gruppo docker 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?

Creazione di un'immagine Docker

Le definizioni di processo di Amazon ECS utilizzano le immagini Docker per avviare i container sulle istanze di container nei tuoi cluster. In questa sezione, crei un'immagine Docker di una semplice applicazione Web e la testi sul tuo sistema locale o su un' EC2 istanza Amazon, quindi invii l'immagine al registro dei contenitori Amazon ECR in modo da poterla utilizzare in una definizione di attività Amazon ECS.

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 # Update installed packages and install Apache RUN yum update -y && \ yum install -y httpd # 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'EXPOSEistruzione indica che la porta 80 sul contenitore è quella in ascolto e l'CMDistruzione 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.

    Se esegui il comando su macOS 64"M1/Mx-chip, Use the --platform option "--platform linux/amd.

    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.

    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' EC2 istanza, questo è il valore DNS pubblico per il server, che è lo stesso indirizzo che usi per connetterti all'istanza con 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.

Invia l'immagine al registro del container di Amazon Elastic

Amazon ECR è un servizio di registro AWS Docker gestito. Puoi utilizzare la CLI di Docker per inviare, estrarre e gestire le immagini nei tuoi repository Amazon ECR. Per i dettagli sui prodotti Amazon ECR, i case study dei clienti in evidenza e FAQs, consulta le pagine dei dettagli del prodotto Amazon Elastic Container Registry.

Come aggiungere un tag all'immagine e inviarla ad Amazon ECR
  1. Crea un repository Amazon ECR per archiviare l'immagine hello-world. Annota il valore repositoryUri nell'output.

    regionSostituiscilo, ad esempio Regione AWS, con il tuo. us-east-1

    aws ecr create-repository --repository-name hello-repository --region region

    Output:

    {
        "repository": {
            "registryId": "aws_account_id",
            "repositoryName": "hello-repository",
            "repositoryArn": "arn:aws:ecr:region:aws_account_id:repository/hello-repository",
            "createdAt": 1505337806.0,
            "repositoryUri": "aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository"
        }
    }
  2. Applica un tag all'immagine hello-world con il valore repositoryUri ricavato nella fase precedente.

    docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Esegui il comando aws ecr get-login-password. Specificare l'URI del registro in cui si desidera eseguire l'autenticazione. Per maggiori informazioni, consulta Autorizzazioni del registro nella Guida per l'utente di Amazon Elastic Container Registry.

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

    Output:

    Login Succeeded
    Importante

    Se viene visualizzato un errore, installare o eseguire l'upgrade alla versione più recente dell' AWS CLI. Per ulteriori informazioni, vedere Installazione o aggiornamento alla versione più recente di AWS CLI nella Guida per l'AWS Command Line Interface utente.

  4. Invia l'immagine ad Amazon ECR con il valore repositoryUri dalla fase precedente.

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

Eliminazione

Per continuare con la creazione di una definizione di attività di Amazon ECS e l'avvio di un'attività con l'immagine del container, vai al passaggio Passaggi successivi. Una volta completato l'esperimento con l'immagine Amazon ECR, puoi eliminare il repository in modo che non ti siano addebitati costi per l'archiviazione dell'immagine.

aws ecr delete-repository --repository-name hello-repository --region region --force

Passaggi successivi

Le definizioni di attività richiedono un ruolo per l'esecuzione dell'attività. Per ulteriori informazioni, consulta Ruolo IAM di esecuzione di attività Amazon ECS.

Dopo aver creato e inviato l'immagine del contenitore ad Amazon ECR, puoi utilizzare quell'immagine in una definizione di attività. Per ulteriori informazioni, consultare uno dei seguenti argomenti: