Entrar num contentor que está a correr: exec, cp e o que não editar lá dentro

O contentor está a correr e precisa de ver lá dentro: um ficheiro, uma variável, correr um comando da aplicação. A resposta curta: o docker exec abre uma linha de comandos (ou corre um comando) dentro de um contentor que já está ligado, e o docker cp copia ficheiros entre o servidor e o contentor. Servem para olhar e diagnosticar. Não servem para manter a aplicação: o que alterar lá dentro perde-se quando o contentor for recriado.

Os comandos que mais se usam

Para… Comando
Abrir uma linha de comandos no contentor docker exec -it nome sh (em imagens Alpine só há o sh; noutras pode usar bash). Saia com exit.
Correr um só comando e sair docker exec nome ls -la /app
Entrar como root, se a imagem corre com outro utilizador docker exec -u root -it nome sh
Fazer o mesmo num serviço do Compose docker compose exec serviço sh (na pasta do projecto)
Copiar um ficheiro do contentor para o servidor docker cp nome:/app/registo.log ./registo.log
Copiar do servidor para o contentor docker cp ./config.json nome:/app/config.json
Ver o consumo em directo docker stats (memória e processador por contentor)
Ver os processos de um contentor docker top nome

Diagnosticar, passo a passo

1 Confirme que está ligado: docker ps. O exec só funciona em contentores a correr; num que caiu, veja os registos: o que olhar quando não arranca.
2 Entre e olhe: docker exec -it nome sh
ls -la
cat /app/config.json
exit
Veja se os ficheiros estão onde a aplicação espera e com os donos certos.
3 Teste a rede a partir de dentro (se a imagem trouxer as ferramentas): getent hosts db mostra se o nome de outro serviço se resolve. Imagens pequenas muitas vezes não têm curl nem ping.
4 Traga os ficheiros de que precisa com o docker cp para ler à vontade no servidor, em vez de os ler ao ecrã.
O que mudar dentro do contentor perde-se. Se editar um ficheiro com o exec e depois recriar o contentor (docker compose up -d com uma imagem nova, por exemplo), a alteração desaparece. A correcção de verdade faz-se no código ou na configuração e reconstrói-se a imagem, ou monta-se o ficheiro de fora: volumes e bind mounts. Para actualizar sem perder dados: actualizar uma aplicação Docker.
Cuidado com os segredos no ecrã. docker exec nome env mostra todas as variáveis, incluindo senhas e chaves. Não cole essa saída num pedido de suporte nem num fórum sem apagar o que for secreto.
Quem pode usar o docker manda no servidor. Pertencer ao grupo docker equivale, na prática, a ser root. Dê esse acesso só a quem deve: as precauções com o Docker.

O contentor corre, mas o servidor deixou de responder ou o SSH não entra? Isso é connosco: diga-nos o que vê.

Abrir um pedido de suporte

VEJA TAMBÉM

O seu primeiro contentor, e o que ver quando não arranca

Docker: volumes ou bind mounts, onde ficam os dados e como os guardar

Actualizar uma aplicação Docker sem perder dados

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?