O Docker enche o disco do VPS por três caminhos: as imagens e camadas que ficam depois de actualizar, os volumes que ninguém usa, e os registos dos contentores, que por omissão crescem sem fim. O erro típico é «No space left on device», e o sintoma, uma base de dados que pára ou um contentor que não arranca. Primeiro mede-se; depois limpa-se o que se tem a certeza de poder perder.
Primeiro: onde está o espaço
| 1 |
Veja o disco todo: df -h. Procure a linha da partição principal e a coluna «Use%».
|
|
| 2 |
Veja o que é do Docker: docker system dfMostra imagens, contentores, volumes e a cache de construção, e quanto do espaço é recuperável.
|
|
| 3 |
Veja os maiores directórios do sistema, se o Docker não explica tudo: sudo du -xh --max-depth=1 /var | sort -hOs dados do Docker ficam, normalmente, em /var/lib/docker.
|
|
Limpar, do mais seguro ao mais arriscado
| O que ocupa |
Comando |
Risco |
| Imagens sem nome ou sem uso |
docker image prune |
Baixo: volta a descarregar o que precisar. |
| Contentores parados |
docker container prune |
Baixo, mas veja primeiro com docker ps -a o que lá está. |
| Cache de construção |
docker builder prune |
Baixo: as construções seguintes ficam mais lentas. |
| Todas as imagens que nenhum contentor usa |
docker image prune -a |
Médio: terá de as descarregar outra vez. |
| Volumes sem contentor |
docker volume ls e só depois docker volume rm nome |
Alto. Um volume pode ter a sua base de dados. Apague um a um, sabendo o que é. |
Os registos que crescem sem fim
Cada contentor escreve o que a aplicação imprime num ficheiro de registo no servidor, e por omissão esse ficheiro não tem limite. Uma aplicação faladora, ou uma que falha em ciclo, pode encher o disco só com isso. Para o ver: sudo du -sh /var/lib/docker/containers. A solução é limitar o tamanho e o número de ficheiros, no Compose:services:
app:
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"Os valores são exemplos; escolha os seus. A regra vale para os contentores criados depois da alteração: recrie-os com docker compose up -d --force-recreate. Para libertar já o espaço de um registo gigante, como emergência: sudo truncate -s 0 $(docker inspect --format="{{.LogPath}}" nome-do-contentor).
|
Cuidado com o docker system prune -a --volumes. É o comando que aparece em todos os guias e é o que mais vezes apaga uma base de dados. Só o use num servidor onde sabe exactamente o que há em cada volume, e com cópia feita. Em caso de dúvida, os comandos mais seguros da tabela acima chegam.
|
|
O disco encheu e já não consegue entrar por SSH? Abra um pedido: ajudamos a recuperar o acesso. Decidir o que apagar dentro do servidor é consigo.
Abrir um pedido de suporte
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 321,75 MT/mês (plano de 3 anos, com cupão) Ver planos |