Trabalhar com Docker é essencial para o desenvolvimento moderno, mas, em máquinas com recursos limitados, a ferramenta pode se tornar um pesadelo. Recentemente, enfrentei o desafio de conciliar a praticidade dos containers com a performance sofrível do meu macbook.
Com pouco espaço em disco e o alto consumo de recursos gerado pelo docker desktop, o sistema operacional e outras ferramentas essenciais, como o cursor (que também demanda memória), frequentemente sofriam. O resultado era um dia a dia de trabalho marcado por lentidão e travamentos.
A solução? Mover o processamento. Decidi transformar uma pequena máquina que eu tinha parada em casa em um servidor docker dedicado, aliviando a carga do meu mac e recuperando a performance.
Adotei uma estratégia para gerenciar meus containers no servidor remoto (homeserver
) com a mesma facilidade de um ambiente local, baseada em recursos nativos do sistema: contextos docker e chaves SSH configuradas.
Abaixo, detalho os caminhos que tomei para alcançar um acesso remoto rápido, seguro e eficiente, liberando os recursos do meu Mac para o que realmente importa.
Passo 1: A Solução de Performance – Contextos Docker para Alívio de Recursos
O primeiro passo foi abraçar a ferramenta nativa do Docker para alternar entre ambientes: Contextos Docker. Esta foi a escolha ideal, pois me permite gerenciar meus containers no servidor remoto (homeserver
) com os mesmos comandos que uso localmente, mantendo a flexibilidade de voltar para o ambiente default
(minha máquina) quando necessário, como em viagens.
Ao fazer isso, movi o pesado gerenciamento da virtual machine do docker desktop e o consumo de recursos dos containers para o servidor dedicado, deixando o mac livre.
Como configurar o Contexto Docker:
Gere as Chaves SSH (Conforme o Passo 2, abaixo).
-
Crie o Contexto Remoto:
docker context create homeserver --docker host=ssh://user@homeserver
-
Para usar o servidor remoto:
docker context use homeserver # Agora, 'docker ps' mostra os containers do servidor
-
Para voltar à sua máquina local (e reverter o consumo de recursos):
docker context use default
Passo 2: O Fim das Senhas – Chaves SSH para Autenticação Rápida
Para garantir que a troca de contexto fosse instantânea — e para permitir que o Contexto Docker funcionasse sem interrupções —, a autenticação por senha precisava ser eliminada. A solução foi o uso de chaves SSH.
Após gerar meu par de chaves, eu copiei a chave pública para o servidor remoto, permitindo que a conexão fosse estabelecida instantaneamente:
-
Gerar o par de chaves (local):
ssh-keygen -t rsa -b 4096
-
Copiar a chave pública (para o servidor):
ssh-copy-id user@homeserver
Com as chaves configuradas, o Docker pode se conectar ao daemon remoto sem me pedir a senha, tornando a alternância de contexto imediata e fluida.
Passo 3: Acessando os Serviços Docker como "Localhost" com ~/.ssh/config
Mudar o Docker para o servidor resolve o problema de performance, mas eu ainda precisava acessar os serviços (como um banco de dados ou um Localstack) de forma conveniente.
Para isso, configurei o arquivo ~/.ssh/config
para automatizar a criação de túneis SSH (Port Forwarding), permitindo que eu acesse, por exemplo, o PostgreSQL rodando no servidor simplesmente digitando localhost:5432
no meu cliente local.
Minha configuração no arquivo ~/.ssh/config
:
Host homeserver
# O endereço IP ou DNS real do seu servidor (Substitua!)
HostName [IP-DO-HOMESERVER]
# Usuário SSH na máquina remota
User user
# Porta SSH (padrão)
Port 22
# 1. Túnel para a porta 5432 (Ex: PostgreSQL)
# Porta local 5432 aponta para a porta 5432 no homeserver
LocalForward 5432 localhost:5432
# 2. Túnel para a porta 4566 (Ex: Serviço AWS Localstack)
# Porta local 4566 aponta para a porta 4566 no homeserver
LocalForward 4566 localhost:4566
# Garante que a conexão não caia por inatividade
ServerAliveInterval 60
ServerAliveCountMax 5
# Opcional: Não abre um terminal, apenas mantém o túnel ativo
RequestTTY no
# Opcional: Configuração para autenticação de host (em caso de IP estático)
StrictHostKeyChecking no
Para ativar o túnel e acessar os serviços:
ssh -f -N homeserver
Conclusão
Ao combinar a conveniência dos Contextos Docker para o gerenciamento de containers e a segurança dos Túneis SSH configurados para o acesso aos serviços, consegui não apenas um ambiente de desenvolvimento mais saudável, mas também salvei meu tempo de vida evitando irritações desnecessárias com a falta de recursos da minha máquina.
Top comments (0)