Formação AWS

← Todos os artigos

Docker na AWS com VS Code Remote SSH, sem instalar Docker local

ContainersPor Henrylle Maia · 15 out 2026 · 9 min de leitura

Instalar Docker no Windows, ou numa máquina com limitação de virtualização, trava muita gente antes de começar a estudar. A saída que mostro aqui tira o Docker da sua máquina: você sobe uma EC2 Ubuntu já com tudo instalado e conecta o VS Code nela por SSH. Você edita e roda pelo VS Code, e os containers rodam na AWS.

Gravei essa aula em fevereiro de 2022, a partir de uma dificuldade real: no meu evento de Docker, parte do pessoal se perdia na instalação, principalmente no Windows.

Por que rodar o ambiente na AWS

Com o ambiente na AWS, sua máquina precisa só do VS Code e de uma extensão de SSH. Eu vejo três ganhos:

  • Sem instalar Docker nem montar virtualização no seu computador.
  • Velocidade. Deploy ou qualquer execução que dependa de rede com a nuvem já acontece dentro da AWS.
  • Portabilidade. Em outra máquina (um Mac, por exemplo), basta ter o VS Code e refazer a conexão.

O VS Code entra só para dar uma edição visual. Se preferir, você usa só o terminal.

Mac, Linux e Windows, cada um com VS Code, apontam para o mesmo setup na AWSTrês máquinas, um setup na AWSMacVS CodeLinuxVS CodeWindowsVS CodeAWSsetup
Mac, Linux e Windows, cada um com VS Code, se conectam ao mesmo setup na AWS, em vez de instalar Docker em cada máquina

O que você precisa antes

  • Uma conta AWS. Eu trabalhei na região da Virgínia.
  • O VS Code instalado.
  • O projeto bia_setup_devops_aws, no meu GitHub. Ele tem o script userdata, que faz o setup da instância. A BIA é a aplicação do meu evento: Node com React e PostgreSQL, em containers.
  • Um par de chaves e um security group, que criamos no próximo passo.

Clone o repositório e abra no VS Code:

bash
git clone https://github.com/henrylle/bia_setup_devops_aws.git
code bia_setup_devops_aws

1Criar o par de chaves e o security group

No console do EC2, em Create key pair, dê um nome (usei bia), tipo RSA e formato .pem. Guarde o arquivo com muita segurança numa pasta de fácil acesso: a AWS não deixa recuperar a chave depois.

Depois crie o security group:

  1. Nome bia-ssh, na VPC padrão.
  2. Regra de entrada: tipo SSH, origem Meu IP.

Com a origem Meu IP, só o seu endereço alcança a porta 22.

2Lançar a EC2 com o script no user data

Eu preparei o script para Ubuntu, então lancei uma Ubuntu 20.04 (era a versão da época), tipo t3.micro. Na tela de detalhes da instância, no fim, está o campo User data: é um script que roda no boot para configurar a instância. Escolha o arquivo userdata do projeto.

O resto segue o padrão: armazenamento padrão, a tag Name (usei bia_setup_devops_aws), o security group bia-ssh e a chave bia.

O script instala e configura:

  • Docker, iniciado e habilitado para subir junto com a instância;
  • Docker Compose;
  • Node e a atualização do NPM;
  • AWS CLI;
  • permissão para usar o Docker sem root.

Nesse ambiente a execução foi rápida, porque roda dentro da AWS.

3Ou rodar o mesmo script à mão

Se o user data é novo para você e passa insegurança, dá para fazer manualmente. Lancei uma segunda instância igual, sem user data, com o nome bia_setup_devops_aws_manual.

Em Connect, aba SSH client, copie o comando de exemplo e entre na instância pelo terminal, na pasta onde está a chave. Depois, dentro dela:

bash
git clone https://github.com/henrylle/bia_setup_devops_aws.git
cd bia_setup_devops_aws
chmod +x userdata
./userdata

Ao terminar, um docker run hello-world confirmou o Docker funcionando. Fiquei com dois ambientes separados, um automático e um manual, para mostrar os dois caminhos.

4Conectar o VS Code por Remote SSH

No VS Code, instale a extensão Remote - SSH. Ao instalar, aparece um botão Open a remote window no canto inferior esquerdo. Nele, escolha Open SSH Configuration File e edite o arquivo de configuração. Cada instância ganha um bloco:

Arquivo de configuração do SSH com dois hosts, bia-aws-automatico e bia-aws-manual, cada um com User ubuntu, Port 22 e a chave bia.pem; os endereços foram cobertos
Arquivo de configuração do SSH com dois hosts, bia-aws-automatico e bia-aws-manual, cada um com User ubuntu, Port 22 e a chave bia.pem; os endereços foram cobertos

Em cada bloco, o HostName é o Public DNS da instância (o console mostra em Connect, aba SSH client), o User é ubuntu e o IdentityFile aponta para o .pem. Salve e conecte no host.

Na primeira conexão, o VS Code pergunta pelo fingerprint e instala um VS Code Server na instância, e depois pede a pasta a abrir e se você confia nela. Confirme. A partir daí o terminal do VS Code é o da instância, e você navega nos arquivos dela como se estivesse local.

5Rodar o projeto na AWS e acessar no localhost

Dentro da instância, clone o projeto da BIA, entre na pasta e suba os containers:

bash
git clone https://github.com/henrylle/bia.git
cd bia
docker-compose up -d

O Compose baixa as imagens e executa o Dockerfile: baixa o Node, faz o npm install e o build do React.

Quando termina, o VS Code avisa que a aplicação roda na porta 3001 e já faz o encaminhamento de porta. Na aba Ports aparece a 3001 com endereço localhost:3001.

Aba Ports do VS Code conectado à instância, com a porta 3001 encaminhada para localhost:3001
Aba Ports do VS Code conectado à instância, com a porta 3001 encaminhada para localhost:3001

Abri localhost:3001 no navegador e a aplicação apareceu, com a computação toda na AWS.

Falta criar a estrutura do banco. Entre no container do servidor, rode a migration e recarregue a página:

bash
docker-compose exec server bash
npx sequelize db:migrate

Com a migration executada, cadastrei uma tarefa de teste e ela foi salva.

6Parar a instância ao terminar

Antes, um aviso: eu não recomendo manter duas conexões SSH ao mesmo tempo, como fiz na aula. Uma delas perdeu a conexão e eu terminei a instância automática, ficando só com a manual.

Terminou o dia, pare a instância (Instance state, Stop instance). Não é terminar: parar mantém a instância, terminar apaga. Parada, você deixa de pagar pela computação. Na aula, citei menos de dois centavos de dólar por hora para uma instância desse porte; é o valor de 2022, então confira na página de preços do EC2.

Para voltar no dia seguinte:

  1. Inicie a instância no console. Ela muda de IP público.
  2. Copie o novo Public DNS e troque o HostName no arquivo de configuração do SSH.
  3. Conecte, abra a pasta da BIA e rode o docker-compose up -d.
  4. Na aba Ports, refaça o encaminhamento da 3001. Ao ligar de novo, ele não ficou automático.

Cadastrei outra tarefa depois do stop e start e a aplicação continuou funcionando.

A BIA em localhost:3001 com as duas tarefas salvas: a de antes e a de depois do stop e start da instância
A BIA em localhost:3001 com as duas tarefas salvas: a de antes e a de depois do stop e start da instância

A versão de 2023: Amazon Linux 2023 e Git Bash

Em 20 de outubro de 2023 refiz a aula, no vídeo Docker na AWS com VS Code, com a mesma ideia e duas trocas. A AMI agora é Amazon Linux 2023, então o User no arquivo de configuração do SSH é ec2-user, não ubuntu. E o script do user data agora vem do projeto da BIA: fica na pasta scripts do repositório henrylle/bia, no arquivo user_data_ec2_zona_a.sh.

No Windows, antes de configurar o VS Code, teste a conexão com ssh no terminal. Para isso você precisa do Git Bash instalado. Assim você tem certeza de que a chave e o caminho dela funcionam.

O que prova que o ambiente é um só: com a BIA no ar, rodei docker compose down na EC2 e o localhost:3001 parou de responder junto com o endereço público da instância. O localhost é só o encaminhamento de porta do VS Code para a máquina remota.

Para abrir o endereço público, eu liberei a porta 3001 no security group para qualquer origem, só para o teste.

Dois limites desse modelo, que eu mesmo aponto na aula: a chave .pem precisa existir e ser guardada, e a regra presa ao seu IP precisa ser trocada quando o IP mudar.

Do par de chaves à aplicação rodando na AWS e aparecendo no seu localhost, até parar a instância no fim do diaChave e security groupSSH só do seu IPEC2 Ubuntuscript no user dataVS Codeextensão Remote SSHDocker Composeporta 3001 encaminhadaParar a instânciapara de pagar a computação
Do par de chaves à aplicação rodando na AWS e aparecendo no seu localhost, até parar a instância no fim do dia

Checklist

  • Crie o par de chaves RSA em .pem e guarde o arquivo em lugar seguro.
  • Crie o security group com SSH liberado só para o seu IP.
  • Lance uma EC2 Ubuntu t3.micro com o script userdata no campo User data.
  • Instale a extensão Remote - SSH e configure HostName, User ubuntu e IdentityFile.
  • Rode docker-compose up -d e a migration, e abra localhost:3001.
  • Pare a instância (não termine) ao fim do trabalho.
  • Ao religar, troque o HostName pelo novo Public DNS e refaça o encaminhamento da porta.
  • Confira a Free Tier e os preços atuais nas páginas oficiais.

Com esse ambiente, a dificuldade de instalar Docker deixa de ser o que impede você de praticar: você sobe, trabalha e para a instância quando terminar.

O que os alunos dizem

  • “Comecei a estudar Cloud em 2023 e entrei na Imersão AWS para aprofundar minha prática.”

    Luiz Claudio, Arquiteto de Soluções

    Ver depoimento
  • “Hoje recebo oportunidades 100% remoto e finalmente me sinto recolocada no mercado.”

    Patrícia Prado, Desenvolvedora Back-end

    Ver depoimento
  • “A Formação AWS me mostrou o caminho, me deu prática de verdade e mudou minha vida.”

    Rodrigo Raspinola, Analista Cloud / SRE

    Ver depoimento

Formação AWS

Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.

Agende uma conversa

Prefere assistir?

A aula completa (33 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

Leia também

Compartilhe este post