5.1 Fundamentos do comando docker exec
O comando docker exec
é uma ferramenta para interagir com containers em execução. Ele permite executar comandos e abrir sessões interativas dentro do container. Isso é útil para tarefas administrativas, debugging e monitoramento. Nesta aula, vamos analisar em detalhes como usar o comando docker exec
, quais parâmetros estão disponíveis e trazer exemplos práticos de sua aplicação.
O comando docker exec
é usado para executar comandos em um container em execução. Com ele, você pode entrar no container e interagir com ele como se estivesse trabalhando diretamente em um servidor.
Sintaxe
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Onde:
-
CONTAINER
: o nome ou ID do container no qual você quer acessar. -
COMMAND
: o comando que você quer executar dentro do container. ARG...
: argumentos para o comando.
Exemplo básico de uso
Este exemplo executa o comando ls /app
dentro do container my_container
, permitindo ver o conteúdo do diretório /app
no container.
docker exec my_container ls /app
5.2 Parâmetros do comando docker exec
O comando docker exec suporta várias opções que permitem configurar o comportamento da execução de comandos dentro do container.
1. Abrindo uma sessão interativa
Pra começar uma sessão interativa, usa a combinação das opções -i
(interactive) e -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
Nesse exemplo, será aberto um terminal interativo Bash
dentro do container my_container
. Isso vai te permitir executar comandos em tempo real.
2. Executando comandos em modo desacoplado
Se você precisa executar um comando dentro do container e não quer esperar ele terminar, pode usar a opção -d
(detached mode).
docker exec -d my_container touch /app/newfile.txt
Nesse exemplo, o comando cria um arquivo vazio newfile.txt
no diretório /app
do container my_container
. O controle do terminal volta imediatamente após a execução do comando, sem esperar ele terminar.
3. Especificando variáveis de ambiente personalizadas
Você pode passar variáveis de ambiente pro container usando o parâmetro -e
.
docker exec -e MY_VAR=value my_container env
Esse exemplo passa a variável de ambiente MY_VAR
pro container e executa o comando env
pra mostrar todas as variáveis de ambiente dentro do container.
5.3 Exemplos de uso
Exemplo 1: Visualizar processos em execução dentro do container
Este exemplo executará o comando ps aux
dentro do container my_container
e mostrará a lista de todos os processos em execução.
docker exec my_container ps aux
Exemplo 2: Verificar o status de um serviço no container
Este exemplo executará o comando service nginx status
dentro do container my_container
e mostrará o status do serviço nginx
.
docker exec my_container service nginx status
Exemplo 3: Instalar um pacote dentro do container
Este exemplo atualizará a lista de pacotes e instalará o editor vim
dentro do container my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Cenários práticos
1. Administração de containers
O comando docker exec permite que administradores realizem tarefas de manutenção dentro dos containers: editar arquivos de configuração, verificar logs ou alterar permissões de arquivos.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Depuração de aplicações
Durante o desenvolvimento e teste de aplicações, o comando docker exec ajuda desenvolvedores a verificar o estado da aplicação, realizar depuração e analisar erros.
docker exec -it my_container python /app/scripts/debug.py
3. Monitoramento e diagnóstico
Com o docker exec é possível executar comandos de diagnóstico e monitorar o estado do container: verificar o uso de recursos, conexões de rede e outras métricas.
docker exec my_container top
Esse comando vai iniciar a ferramenta top dentro do container my_container e mostrar o uso atual de recursos.
5.5 Recomendações Adicionais
1. Garantir segurança
Ao usar o comando docker exec é importante garantir a segurança. Certifique-se de que o acesso aos contêineres está limitado e que apenas usuários autorizados podem executar comandos dentro dos contêineres.
2. Automatizar tarefas
Você pode automatizar tarefas repetitivas usando scripts que utilizam o comando docker exec. Isso permite criar fluxos de trabalho complexos e automatizar a administração de contêineres.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Esse script irá executar o comando uptime
em todos os contêineres em execução e mostrar o tempo de funcionamento deles.
3. Logs e debugging
Às vezes, a execução de um comando pode falhar. Nesses casos, é útil verificar os logs do contêiner para identificar o motivo.
docker logs my_container
GO TO FULL VERSION