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?
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
Pré-requisitos
Antes de começar, certifique-se de que os seguintes pré-requisitos sejam atendidos.
-
Certifique-se de ter concluído as etapas de configuração do Amazon ECR. Para obter mais informações, consulte Configuração para o Amazon ECR no Guia do usuário do Amazon Elastic Container Registry.
-
Seu usuário deve ter as permissões necessárias do IAM para acessar o serviço do Amazon ECR. Para obter mais informações, consulte Políticas gerenciadas do Amazon ECR.
-
Você tem o Docker instalado. Para obter as etapas de instalação do Docker para o Amazon Linux 2, consulte Instalar o Docker no Amazon Linux 2. Em todos os outros sistemas operacionais, consulte a documentação do Docker em Visão geral do Docker Desktop
. -
Tenha a AWS CLI instalada e configurada. Para obter mais informações, consulte Instalar a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.
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
-
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.
-
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.
-
Atualize os pacotes instalados e o cache de pacotes em sua instância.
sudo yum update -y
-
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
. -
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
-
Adicione o
ec2-user
ao grupodocker
, de modo que você possa executar comandos do Docker sem usar osudo
.sudo usermod -a -G docker ec2-user
-
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 grupodocker
apropriadas. -
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
-
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
-
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çãoEXPOSE
expõe a porta 80 do contêiner e a instruçãoCMD
inicia o servidor Web. -
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 .
-
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
-
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
". -
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.
-
-
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
-
Crie um repositório do Amazon ECR para armazenar sua imagem
hello-world
. ObserverepositoryUri
na saída.Substitua
region
com seu Região da AWS, por exemplo,us-east-1
.aws ecr create-repository --repository-name
hello-repository
--regionregion
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" } } -
Marque a imagem
hello-world
com o valorrepositoryUri
da etapa anterior.docker tag hello-world
aws_account_id
.dkr.ecr.region
.amazonaws.com/hello-repository
-
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-stdinaws_account_id
.dkr.ecr.region
.amazonaws.comResultado:
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 ).
-
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
--regionregion
--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.