Noções básicas do Docker para Amazon ECS - Amazon Elastic Container Service

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

Noções básicas do Docker para Amazon ECS

Docker é uma tecnologia que fornece as ferramentas para criar, executar, testar e implantar aplicativos distribuídos baseados em contêineres do Linux.Amazon ECSusa imagens do Docker em definições de tarefa para iniciar contêineres como parte de tarefas em seus clusters.

AWSe o Docker colaboraram para criar uma experiência de desenvolvedor simplificada que permite implantar e gerenciar contêineres noAmazon ECSdiretamente usando as ferramentas do Docker. Agora você pode criar e testar seus contêineres localmente usando o Docker Desktop e o Docker Compose e implantá-los noAmazon ECSnoFargate. Para começar a usar oAmazon ECSe integração com o Docker, baixe o Docker Desktop e, opcionalmente, inscreva-se para obter uma ID do Docker. Para obter mais informações, consulteDocker DesktopeInscrição de ID do Docker.

O Docker fornece um passo a passo sobre a implantação de contêineres noAmazon ECS. Para obter mais informações, consulteImplantar contêineres do Docker noAmazon ECS.

A documentação neste guia supõe que os leitores possuem uma compreensão básica do 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.

Instalação do Docker

Importante

Se você já tiver um Docker instalado, vá para Criar uma imagem do Docker.

O Docker Desktop é um aplicativo fácil de instalar para seu ambiente Mac ou Windows que permite 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 que são úteis ao usar o Docker comAmazon ECS. Para obter mais informações sobre como instalar o Docker Desktop no seu sistema operacional, consulteVisão geral do Docker Desktop.

Se não for necessário um ambiente de desenvolvimento local e preferir usar umAmazon EC2Para usar o Docker, fornecemos as etapas a seguir para iniciar umAmazon EC2e instale o Docker Engine e a CLI do Docker.

Para instalar o Docker em uma instância do Amazon EC2

  1. Execute uma instância com a Amazon Linux 2 ou Amazon Linux AMI. Para obter mais informações, consulteExecutar uma instância donoGuia do usuário do Amazon EC2 para instâncias do Linux.

  2. Conecte-se à sua instância. Para obter mais informações, consulte Conectar-se à instância do Linux 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.

    Amazon Linux 2

    sudo amazon-linux-extras install docker

    Amazon Linux.

    sudo yum install docker
  5. Inicie o serviço Docker.

    sudo service docker start
  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 o ec2-user 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 tarefas do Amazon ECS usam imagens do Docker para executar contêineres nas instâncias de contêiner em seus clusters. Nesta seção, você cria uma imagem do Docker de um aplicativo web simples e testa-a no seu sistema local ou na instância do Amazon EC2. Depois, você envia a imagem ao registro de contêiner (como o Amazon ECR ou o Docker Hub) 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. 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. ORUNAs instruções de atualizam os caches de pacote, instalam alguns pacotes de software para o servidor web e, em seguida, gravam o conteúdo “Hello World!” na raiz do documento do servidor web. A instrução EXPOSE expõe a porta 80 no 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, localize o endereço IP da VM VirtualBox que está hospedando o Docker com o comando docker-machine ip, substituindo machine-name pelo nome da máquina de docker que você está usando.

      docker-machine ip machine-name

    Você deverá ver uma página da web com a sua instrução "Hello, World!" instrução.

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

Enviar sua imagem para o Amazon Elastic Container Registry

O Amazon ECR é um serviço gerenciado de registro do Docker da AWS. Você pode usar a CLI do Docker para enviar, extrair e gerenciar imagens noAmazon ECRrepositórios. Para ver detalhes do produto, estudos de caso de clientes em destaque e perguntas frequentes sobre o Amazon ECR, consulte as páginas de detalhes do produto Amazon Elastic Container Registry.

Esta seção requer o seguinte:

  • Tenha a AWS CLI instalada e configurada. Se você não tiver a AWS CLI instalada em seu sistema, consulte Instalar a AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.

  • 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, consulteAmazon ECRPolíticas gerenciadas do.

Para marcar a imagem e enviá-la por push para o Amazon ECR

  1. Crie um repositório do Amazon ECR para armazenar sua imagem hello-world. Observe repositoryUri na saída.

    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 Autenticação de registro no Guia do usuário do Amazon Elastic Container Registry.

    aws ecr get-login-password | 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 Instalar a AWS Command Line Interface no Guia do usuário do AWS Command Line Interface.

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

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

Limpar

Quando acabar de testar sua imagem do Amazon ECR, você poderá excluir o repositório para não ser cobrado pelo armazenamento de imagens.

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