AWS – Labzim – Docker em EC2

Objetivo:

Criar um container em uma máquina EC2 com uma aplicação web simples.

Pré-requisitos:

Ter uma instância EC2 Amazon Linux com acesso à internet e IP público e acesso SSH a esta instância.

Instalação do Docker

Logado na instância EC2 execute o comando abaixo. O comando atualiza todos os pacotes e suas dependências. O parâmetro -y responde sim para todas as perguntas na execução do programa.

				
					sudo yum update -y
				
			

Para a instalação do Docker execute o seguinte comando.

				
					sudo amazon-linux-extras install docker
				
			

Execute o seguinte comando para iniciar o Docker.

				
					sudo service docker start
				
			

Execute os comandos abaixo. Uma resposta do client e do server garantem que o Docker está funcionando como deveria.

				
					docker info
				
			
				
					docker version
				
			

Para um guia completo de instalação do Docker consulte:

https://docs.docker.com/engine/install/

Iniciando um container

Para iniciar um container de teste do Docker recém-instalado execute o comando

				
					sudo docker run -d --rm -p 80:80 arquitetocloud/node-exemplo-1
				
			

O comando abaixo verifica que o container está em execução.

				
					sudo docker ps
				
			
Adicionando regra ao Security Group

Para que a aplicação no container possa responder solicitações na porta 80 é preciso fazer a liberação no Security Group associado a instância EC2.

Crie uma regra que libere a porta 80 (HTTP). Na imagem a seguir a regra foi criada para liberar a porta 80 para um IP específico, mas a liberação pode ser feita para qualquer endereço IP ou até mesmo para todos os IPs (0.0.0.0/0).

Para testar o app abra um browser e acesso o endereço público da instância EC2.

Este método de fazer deploy de uma aplicação conteneirizada foi usado somente para ilustrar o processo simples de instalação e configuração do Docker, entretanto, fazer o deploy em instâncias EC2 de forma isolada não é considerado adequado para ambientes do mundo real, pois trás com ele algumas desvantagens, como ter que administrar a instância EC2, patches de atualização, segurança, sizing da instância etc.

Serviços como ECS permitem focar somente na aplicação que precisa sofrer deploy, deixando todas as tarefas de administração das instâncias EC2 sob um serviço gerenciado pela AWS. Sobre ECS iremos falar em um próximo post.

It’s done!

Bruno Veiga

Bruno Veiga

Arquiteto Cloud e Arquiteto de Soluções. Me dedicando em compartilhar conhecimento e ajudar empresas a encontrar as melhores soluções tecnológicas para os problemas do negócio com agilidade, segurança, equipes alinhadas e dentro do orçamento.