Como aceder a um contêiner em execução criado a partir de Dockerfile?
sobes.tech IA
Resposta da IA
Existem várias formas de aceder a um contêiner em execução:
-
docker exec: A forma mais comum e recomendada. Executa um comando num contêiner já em funcionamento. -
docker attach: Conecta ao STDIN, STDOUT e STDERR de um contêiner em execução. Normalmente usado para interagir com o processo principal do contêiner. -
Servidor SSH dentro do contêiner: Abordagem menos comum que requer adicionar um servidor SSH à imagem via Dockerfile. Nem sempre recomendado por motivos de segurança e complexidade de gestão.
-
Ferramentas de depuração do host: Em alguns casos, pode-se usar ferramentas de monitorização e depuração do sistema host (por exemplo,
nsenter) para inspecionar processos dentro do espaço de nomes do contêiner.
O método mais flexível e seguro é usar docker exec.
Exemplo de uso de docker exec para obter um shell interativo (por exemplo, bash ou sh):
# Iniciar uma shell interativa dentro do contêiner
docker exec -it <container_id_or_name> bash
# Se bash não estiver disponível, tente sh
# docker exec -it <container_id_or_name> sh
Para obter o ID ou nome do contêiner em execução:
# Mostrar a lista de contêineres em execução
docker ps
Exemplo de uso de docker attach:
# Conectar ao contêiner. Tenha cuidado,
# sair pode parar o processo principal do contêiner
docker attach <container_id_or_name>
Comparação entre docker exec e docker attach:
| Funcionalidade | docker exec |
docker attach |
|---|---|---|
| Executar uma nova comando | Sim | Não |
| Interagir com STDIN/STDOUT/STDERR do processo principal | Não (por padrão) | Sim |
| Sair sem parar o contêiner | Sim | Não (por padrão) |
| Múltiplas ligações | Sim (cada ligação é um novo processo) | Sim (todas as ligações ao mesmo processo) |
No DevOps, o acesso a um contêiner é frequentemente necessário para depuração ou execução de comandos pontuais, tornando o docker exec a ferramenta preferida. Adicionar SSH dentro do contêiner viola o princípio de "um processo por contêiner" e aumenta a complexidade da imagem.