Categorias do Site

Como usar docker exec em containers ativos

Aprenda a usar docker exec para interagir com containers sem reiniciá-los.

Ilustração de um navio azul simplista sobre um fundo abstrato com tons de creme, marrom e laranja que simulam um efeito marmoreado.

O comando exec do Docker permite executar comandos de shell diretamente dentro dos seus containers em execução, sem precisar reiniciá-los. Isso é útil para depurar erros, ajustar configurações ou verificar rapidamente o ambiente de um container, tornando o fluxo de trabalho mais eficiente e evitando tempos de inatividade desnecessários.

docker exec command

Os containers do Docker mudaram a forma como implantamos aplicativos, possibilitando implementar em múltiplas arquiteturas com uma abordagem universal. Com Docker, você pode implementar qualquer coisa, incluindo ferramentas de linha de comando, em diferentes ambientes sem se preocupar com diferenças na infraestrutura subjacente.

Introdução ao docker exec

Antes de explorar o comando, você precisará de um container em execução. Primeiro, se ainda não tiver o Docker instalado, faça o download e configure-o; você precisará dele para executar os comandos.

Depois de tudo configurado, execute este comando para executar o container Ubuntu através da imagem oficial:

docker run -d --name meu_container_ubuntu ubuntu sleep infinity

O que acontece aqui?

  • d — Executa o container em segundo plano (modo desanexado)
  • --name meu_container_ubuntu — Atribui um nome ao container para referências
  • ubuntu — Especifica a imagem do Ubuntu (Docker a baixará se não estiver disponível localmente)
  • sleep infinity — Mantém o container em execução indefinidamente:

getting started with docker exec

Você pode verificar se o container está em execução com o comando ps assim:

docker ps

O comando ps lista todos os containers em execução. Se o container estiver em execução, ele deverá aparecer na lista com o nome atribuído por você.

verify docker container is running

Agora que você está configurado com o Docker e tem um container em execução, pode interagir com ele usando o comando exec.

O comando docker exec

O Docker vem com o comando exec, que permite executar comandos em containers em execução sem reiniciá-los. O comando exec é útil quando você deseja iniciar um shell interativo, inspecionar logs, modificar arquivos ou realizar várias outras tarefas.

A sintaxe geral para o comando docker exec é:

docker exec [OPÇÕES] CONTAINER COMANDO [ARG...]
Opção Função Descrição
-d, --detach Executar em segundo plano Executa o comando em modo desanexado
--detach-keys string Sobrepor teclas de desanexação Define uma sequência de teclas personalizada para desanexar um container
-e, --env list Definir variáveis de ambiente Passa variáveis de ambiente para o comando
--env-file list Carregar arquivo env Carrega variáveis de ambiente de um arquivo especificado
-i, --interactive Manter entrada aberta Mantém a entrada padrão aberta para interação
--privileged Conceder privilégios estendidos Fornece permissões adicionais para executar comandos
-t, --tty Alocar pseudo-TTY Fornece uma interface de shell interativa
-u, --user string Executar como usuário específico Executa o comando como um usuário especificado
-w, --workdir string Definir diretório de trabalho Define o diretório de trabalho dentro do container

Você seguirá a opção especificada com o comando e os argumentos que está executando no container. Vamos executar um comando para listar todos os arquivos no diretório do container:

docker exec meu_container_ubuntu ls -l

O comando deve exibir os arquivos e diretórios em formato longo como este:

ubuntu container command output

Neste caso, usei o ID do container para referenciar o container; funciona como usar o nome do container. Você pode adicionar a opção -it para executar um shell interativo dentro do container:

docker exec -it meu_container /bin/bash

Este comando abre um shell Bash em execução no container. Agora, você pode executar comandos diretamente sem o comando exec:

bash shell no need for exec command

Você pode sair do modo interativo com o comando exit que acompanha o sistema operacional. Por padrão, docker exec executa comandos como usuário root dentro do container. Você pode especificar um usuário diferente com a opção -u.

Primeiro, você precisa criar um novo usuário no sistema operacional do container. Execute este comando para criar um novo usuário chamado paul:

docker exec meu_container_ubuntu useradd -m paul

Agora, você pode especificar o usuário antes dos comandos para executar comandos para um usuário:

docker exec -u paul meu_container_ubuntu whoami

Este comando deve exibir o nome de usuário do usuário assim:

who am i command docker

Você pode passar variáveis de ambiente e ler variáveis de ambiente existentes com a opção -e:

docker exec -e MY_VAR=Hello meu_container_ubuntu printenv MY_VAR

Executar este comando deve exibir “Hello”, já que é o valor para a variável de ambiente MY_VAR. Provavelmente, você precisará executar comandos em modo desanexado (em segundo plano). É aí que a opção -d é útil:

docker exec -d meu_container_ubuntu touch /tmp/detached_file

Este comando cria um arquivo vazio dentro do diretório /tmp sem manter uma sessão interativa aberta. Você também pode definir um diretório de trabalho com a opção -w assim:

docker exec -w /var/log meu_container_ubuntu ls

O comando define o diretório de trabalho como /var/log antes de listar todos os arquivos no diretório de trabalho. Se estiver preso no desenvolvimento, você sempre pode usar a opção --help para navegar por todas as opções:

docker-exec-help-flag

Resolvendo erros do docker exec

Você pode encontrar alguns erros ao usar o comando exec do Docker para interagir com containers em execução. Vamos ver alguns deles e como corrigi-los.

Erro “No such container”

Verifique se você está referenciando um container existente. Execute docker ps para visualizar todos os containers em execução, copie a referência e execute o comando com a referência correta.

Erros de permissão negada

Você pode experimentar isso ao tentar executar um comando como um usuário não-root sem os privilégios necessários. Você pode executar o comando como root ou usar a opção --privileged para permissões extras.

Erro “OCI runtime exec failed”

Neste caso, o container provavelmente não está em execução. Execute docker start para iniciar o container, se for o caso.

Você sempre pode visitar o Fórum da Comunidade Docker se tiver erros diferentes ou se nenhuma dessas soluções funcionar para você.

docker exec ou docker attach?

Os comandos exec e attach do Docker são úteis para interagir com containers em execução, mas são construídos para propósitos diferentes.

Recurso Docker exec Docker attach
Inicia um novo processo dentro do container
Anexa a um processo em execução existente
Suporta várias sessões ao mesmo tempo
Pode executar comandos interativos ou não-interativos

Você usará docker exec quando precisar executar um comando separado dentro de um container em execução e docker attach se precisar interagir com o processo principal em execução dentro do container.

Conclusão

Neste artigo, você aprendeu a interagir com seus containers em execução usando docker exec. O comando docker exec permite que você execute comandos dentro de um container em execução, seja de forma interativa, com variáveis de ambiente ou como um usuário diferente, sem reiniciar o container. Você também aprendeu a resolver erros comuns e a diferença entre exec e docker attach, que se conecta a um processo já em execução.

  • Enfrentando a Complexidade com GraphQL

    Descubra como GraphQL facilita o desenvolvimento de soluções inteligentes com IA.

    Descubra como GraphQL facilita o desenvolvimento de soluções inteligentes com IA.

    Ler notícia completa
    Banner de podcast da UX Magazine intitulado
  • UX: Emoções Além das Telas no Design

    Descubra como o design emocional transforma experiências, indo além das telas e criando conexões humanas.

    Descubra como o design emocional transforma experiências, indo além das telas e criando conexões humanas.

    Ler notícia completa
    Símbolo abstrato em tons de marrom e laranja que se assemelha a uma pessoa estilizada com braços estendidos e uma perna erguida.
  • Como usar CSS line-clamp para limitar texto

    Aprenda a usar a propriedade CSS line-clamp para limitar linhas de texto e melhorar a aparência do layout.

    Aprenda a usar a propriedade CSS line-clamp para limitar linhas de texto e melhorar a aparência do layout.

    Ler notícia completa
    Fundo gradiente em tons de laranja e violeta com o texto
  • Promise.all ainda é relevante em 2025?

    Antes das promises serem introduzidas nativamente no JavaScript, usávamos muitos callbacks para tarefas assíncronas. É comum ver callbacks sendo usados, pois muitos desenvolvedores podem ainda pensar que callbacks e promises são o mesmo, mas não são. Quando promises foram introduzidas, substituíram amplamente os callbacks, tornando a sintaxe mais compreensível. Em 2025, com async/await, Promise.allSettled, Promise.any […]

    Promise.all é crucial para tarefas assíncronas, mas novas alternativas surgem em 2025. Saiba quando usá-lo.

    Ler notícia completa
    Logotipo do JavaScript (JS) em quadrado amarelo sobre fundo com ondas suaves em tons de branco e cinza claro.
  • Equilibrando IA e UX: O Desafio do Design Humanizado

    A IA está sendo integrada aos fluxos de trabalho de design modernos, ajudando na geração de conteúdo, ideação e prototipagem. Isso aumenta a eficiência das equipes de design, aprimorando a forma como criamos, pensamos e resolvemos problemas. No entanto, a IA também traz preocupações ao processo de design, como a possível perda de foco no […]

    Descubra como manter o design UX humanizado enquanto utiliza IA para otimizar processos e aumentar a produtividade.

    Ler notícia completa
    Mão robótica branca tocando a ponta do dedo de uma mão humana contra um fundo colorido em tons de arco-íris.
  • A Revolução dos Navegadores com IA: Impactos e Futuro

    Há uma revolução silenciosa ocorrendo em um software que você usa diariamente, mas raramente pensa sobre: o navegador. Chrome, Safari, Firefox têm sido nossas janelas para a web por décadas. Agora, algo significativo está acontecendo. Uma nova espécie de navegador está surgindo: o navegador com IA. Ele não apenas muda como navegamos, mas redefine o […]

    Navegadores com IA estão mudando a web, impactando a criatividade, economia e verdade online.

    Ler notícia completa
    Tela de interface do Instacart mostrando produtos essenciais para praia à venda, como protetor solar e toalhas, com uma janela de chat com o assistente virtual aberta.
  • As 3 previsões para o futuro do design UX

    A evolução tecnológica moderniza e melhora todas as áreas da tecnologia, incluindo o design de dispositivos digitais, automação, desenvolvimento de software e design UI/UX. Essa evolução e as inovações em HCI (Interação Humano-Computador) impulsionam o design UI/UX para ajudar designers a criar produtos digitais mais amigáveis, usáveis e produtivos para todos os usuários. O design […]

    Confira as três principais previsões para a próxima era do design UX e como elas podem impactar o futuro das interfaces digitais.

    Ler notícia completa
    Ilustração em 3D de um computador desktop moderno com ícones em estilo futurista na tela, sobre fundo roxo com linhas de rede digitais.
  • A Importância do Enquadramento no Design

    No design, o enquadramento do problema está se tornando o cerne do papel humano. À medida que a IA, ou o que chamo de Programa, assume mais o trabalho de solução, nosso ofício muda para como tratamos o problema. “A IA não está substituindo designers; está substituindo designers que focam em saídas automatizáveis.” Citação e […]

    Explorando como o enquadramento de problemas redefine o papel humano no design em tempos de IA.

    Ler notícia completa
    Imagem de rabisco em preto e branco cheia de palavras e desenhos, incluindo cabeças estilizadas, uma palavra
  • Psicologia Ética no E-commerce: Facilite Compras

    A psicologia no e-commerce tem uma má reputação, muitas vezes associada a táticas de manipulação como escassez artificial e cobranças ocultas. No entanto, existe um lado positivo: a facilitação das compras sem manipulação. Trabalhando anos com e-commerce, percebi que a maioria dos problemas de conversão está em facilitar o processo de compra. Vou mostrar quatro […]

    Aprenda como remover barreiras psicológicas no e-commerce, promovendo compras éticas sem manipulação.

    Ler notícia completa
    Ilustração de um trator removendo neve da estrada, com carros vermelhos parcialmente cobertos de neve ao lado. Ambiente frio com árvores ao fundo.