Sobes.tech
Junior

Como se conectar a um contêiner em execução criado com Docker?

sobes.tech IA

Resposta da IA

Existem várias formas:

  1. Docker attach: Conecta a entrada, saída e erros do seu terminal ao processo principal do contêiner.

    docker attach <container_id_or_name>
    
    • Vantagens: Facilidade de uso, conexão instantânea ao processo principal.
    • Desvantagens: Sair da sessão (Ctrl+C) pode parar o processo principal do contêiner. Não é adequado para executar comandos separados no contêiner.
  2. Docker exec: Executa um novo comando dentro do contêiner em execução e conecta um terminal a ele. Ideal para trabalho interativo (shell) ou execução de scripts.

    docker exec -it <container_id_or_name> <comando>
    
    • O parâmetro -it é modo interativo (-i) e alocação de pseudo-TTY (-t).
    • <comando> é o comando que deseja executar dentro do contêiner, geralmente bash ou sh.
    docker exec -it my_web_server bash  # Conexão ao bash no contêiner
    docker exec my_db_container ps aux # Executa o comando `ps aux` e exibe no terminal atual
    
    • Vantagens: Não interrompe o processo principal do contêiner ao sair. Permite executar qualquer comando dentro do contêiner. A forma mais comum para depuração e manutenção.
    • Desvantagens: Executa um processo novo dentro do contêiner.
  3. Servidor SSH no contêiner: Abordagem mais complexa que requer instalação e configuração de um servidor SSH dentro da imagem do contêiner. Permite conectar-se ao contêiner como a uma máquina virtual ou servidor normal via SSH.

    • Vantagens: Método padrão e familiar de gerenciamento. Mais seguro para gerenciamento em produção (com a configuração adequada).
    • Desvantagens: Complica a imagem do contêiner. Requer configurar o servidor SSH e gerenciar chaves/senhas. Quebra o paradigma "um processo por contêiner" do Docker se o processo principal não for SSH.

Recomendação: Para a maioria dos casos de depuração e trabalho interativo, a forma mais adequada e segura é docker exec -it.