Criação de uma imagem de contêiner para uso no Amazon ECS - Amazon ECS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criação de uma imagem de contêiner para uso no Amazon ECS

O Amazon ECS usa imagens do Docker nas definições de tarefa para iniciar contêineres. O Docker é uma tecnologia que fornece a você as ferramentas para criar, executar, testar e implantar aplicações em contêineres. O Docker fornece uma demonstração sobre a implantação de contêineres no Amazon ECS. Para obter mais informações, consulte Implantar contêineres do Docker no Amazon ECS.

O objetivo das etapas descritas aqui é orientá-lo na criação da primeira imagem do Docker e enviar essa imagem para o Amazon ECR, que é um registro do contêiner, para uso nas definições de tarefa do Amazon ECS. Esta demonstração supõe que você possua uma compreensão básica do que é o Docker e de como ele funciona. Para obter mais informações sobre o Docker, consulte O que é o Docker? e Visão geral do Docker.

Importante

A AWS e o Docker trabalharam em conjunto para criar uma experiência de desenvolvedor simplificada que permite a implantação e o gerenciamento de contêineres diretamente no Amazon ECS usando as ferramentas do Docker. Agora você pode criar e testar os contêineres localmente usando o Docker Desktop e o Docker Compose e implantá-los no Amazon ECS no Fargate. Para começar a integração com o Amazon ECS e o Docker, baixe o Docker Desktop e, opcionalmente, cadastre-se para obter uma ID do Docker. Para obter mais informações, consulte Docker Desktop e Cadastro de ID do Docker.

Pré-requisitos

Antes de começar, certifique-se de que os seguintes pré-requisitos sejam atendidos.

Se você não tem ou não precisa de um ambiente de desenvolvimento local e preferir usar uma instância do Amazon EC2 para usar o Docker, fornecemos as seguintes etapas para a inicialização de uma instância do Amazon EC2 usando Amazon Linux 2 e a instalação do Docker Engine e da CLI do Docker.

O Docker Desktop é um easy-to-install aplicativo para seu ambiente Mac ou Windows que você pode usar para criar e compartilhar aplicativos e microsserviços em contêineres. O Docker Desktop inclui o Docker Engine, o cliente da CLI do Docker, o Docker Compose e outras ferramentas úteis no uso do Docker com o Amazon ECS. Para obter mais informações sobre como instalar o Docker Desktop no sistema operacional de sua preferência, consulte Visão geral do Docker Desktop.

Para instalar o Docker em uma instância do Amazon EC2
  1. Inicie uma instância com a AMI do Amazon Linux 2. Para obter mais informações, consulte Iniciar uma instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

  2. Conecte-se à sua instância usando SSH. Para obter mais informações, consulte Conectar-se à instância do Linux usando SSH no Guia do usuário do Amazon EC2 para instâncias do Linux.

  3. Atualize os pacotes instalados e o cache de pacotes em sua instância.

    sudo yum update -y
  4. Instale o pacote do Docker Engine mais recente.

    sudo amazon-linux-extras install docker
    Importante

    Esta etapa pressupõe que você esteja usando o Amazon Linux 2 AMI para sua instância. Em todos os outros sistemas operacionais, consulte Visão geral do Docker Desktop.

  5. Inicie o serviço Docker.

    sudo service docker start

    (Opcional) Para garantir que o daemon do Docker seja iniciado após cada reinicialização do sistema, execute o seguinte comando:

    sudo systemctl enable docker
  6. Adicione o ec2-user ao grupo docker, de modo que você possa executar comandos do Docker sem usar o sudo.

    sudo usermod -a -G docker ec2-user
  7. Faça logout e login novamente para selecionar as novas permissões do grupo docker. Você pode fazer isso ao fechar a janela de terminal SSH atual e se reconectar à sua instância em outra janela. Sua nova sessão SSH terá as permissões de grupo docker apropriadas.

  8. Verifique se você pode executar comandos do Docker sem sudo.

    docker info
    nota

    Em alguns casos, pode ser necessário reinicializar sua instância para fornecer permissões para o ec2-user acessar o daemon do Docker. Tente reinicializar sua instância se você vir o seguinte erro:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Criar uma imagem do Docker

As definições de tarefa do Amazon ECS usam imagens do Docker para iniciar contêineres nas instâncias de contêiner dos clusters. Nesta seção, crie uma imagem do Docker de uma aplicação Web simples e teste-a no sistema ou na instância do Amazon EC2 local. Em seguida, envie a imagem a um registro de contêiner do Amazon ECR para poder usá-la em uma definição de tarefa do Amazon ECS.

Para criar uma imagem do Docker de um aplicativo web simples
  1. Crie um arquivo chamado Dockerfile. Um Dockerfile é um manifesto que descreve a imagem básica a ser usada para a sua imagem do Docker e o que você deseja instalar e executar nela. Para obter mais informações sobre a Dockerfiles, visite Referência de Dockerfiles.

    touch Dockerfile
  2. Edite o Dockerfile que você acabou de criar e adicione o conteúdo a seguir.

    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

    Esse Dockerfile usa a imagem do Ubuntu 18.04. As instruções RUN atualizam os caches de pacotes, instalam alguns pacotes de software para o servidor Web e, em seguida, gravam o conteúdo de “Hello World!” na raiz do documento do servidor Web. A instrução EXPOSE expõe a porta 80 do contêiner e a instrução CMD inicia o servidor Web.

  3. Crie a imagem do Docker do seu Dockerfile.

    nota

    Algumas versões do Docker podem exigir o caminho completo para o seu Dockerfile no seguinte comando, em vez de o caminho relativo mostrado abaixo.

    docker build -t hello-world .
  4. Execute docker images para verificar se a imagem foi criada corretamente.

    docker images --filter reference=hello-world

    Resultado:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  5. Execute a imagem recém-criada. A opção -p 80:80 mapeia a porta 80 exposta no contêiner para a porta 80 no sistema de host. Para obter mais informações sobre o docker run, acesse a Referência de execução do Docker.

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

    A saída do servidor Web Apache é exibida na janela do terminal. Você pode ignorar a mensagem "Could not reliably determine the server's fully qualified domain name".

  6. Abra um navegador e aponte para o servidor que está executando o Docker e hospedando seu contêiner.

    • Se você estiver usando uma instância do EC2, esse é o valor Public DNS para o servidor, que é o mesmo endereço usado para se conectar à instância com o SSH. Certifique-se de que o security group para sua instância permita o tráfego de entrada na porta 80.

    • Se você estiver executando o Docker localmente, aponte seu navegador para http://localhost/.

    • Se você estiver usando docker-machine em um computador Windows ou Mac, encontre o endereço IP da VirtualBox VM que está hospedando o Docker com o docker-machine ip comando, substituindo machine-name pelo nome da máquina docker que você está usando.

      docker-machine ip machine-name

    Você deve ver uma página da Web com seu “Hello, World!” instrução.

  7. Interrompa o contêiner do Docker digitando Ctrl+c.

Enviar a imagem para o Amazon Elastic Container Registry

O Amazon ECR é um serviço gerenciado de registro do AWS Docker. Você pode usar a CLI do Docker para enviar, extrair e gerenciar imagens dos repositórios do Amazon ECR. Para conhecer detalhes dos produtos do Amazon ECR, estudos de caso de clientes em destaque e perguntas frequentes, consulte as Páginas de detalhes dos produtos do Amazon Elastic Container Registry.

Para marcar a imagem e enviá-la para o Amazon ECR
  1. Crie um repositório do Amazon ECR para armazenar sua imagem hello-world. Observe repositoryUri na saída.

    Substitua region com seu Região da AWS, por exemplo, us-east-1.

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

    Resultado:

    {
        "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. Marque a imagem hello-world com o valor repositoryUri da etapa anterior.

    docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Execute o comando aws ecr get-login-password. Especifique o URI de registro no qual deseja fazer a autenticação. Para obter mais informações, consulte Registry Authentication (Autenticação de registro) no Guia do usuário do 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

    Resultado:

    Login Succeeded
    Importante

    Se você receber um erro, instale ou atualize para a versão mais recente da AWS CLI. Para obter mais informações, consulte Installing the AWS Command Line Interface (Instalar a AWS Command Line Interface) no User Guide (Guia do usuário da ).

  4. Envie a imagem para o Amazon ECR com o valor repositoryUri da etapa anterior.

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

Limpar

Para continuar a criar uma definição de tarefa do Amazon ECS e iniciar uma tarefa com a imagem do contêiner, pule para a Próximas etapas. Quando você terminar de testar a imagem do Amazon ECR, poderá excluir o repositório para não ser cobrado por armazenamento de imagens.

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

Próximas etapas

Suas definições de tarefas exigem uma função de execução de tarefas. Para obter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.

Depois de criar e enviar sua imagem do contêiner para o Amazon ECR, considere as seguintes próximas etapas.