O Docker enche o disco do VPS por três caminhos: as imagens e camadas que ficam depois de atualizar, os volumes que ninguém usa, e os registros dos contêineres, que por padrão crescem sem fim. O erro típico é «No space left on device», e o sintoma, um banco de dados que para ou um contêiner que não inicia. 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, contêineres, volumes e o cache de construção, e quanto do espaço é recuperável.
|
|
| 3 |
Veja os maiores diretó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 baixar o que precisar. |
| Contêineres 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 contêiner usa |
docker image prune -a |
Médio: terá de as baixar outra vez. |
| Volumes sem contêiner |
docker volume ls e só depois docker volume rm nome |
Alto. Um volume pode ter o seu banco de dados. Apague um a um, sabendo o que é. |
Os registros que crescem sem fim
Cada contêiner escreve o que a aplicação imprime num arquivo de registro no servidor, e por padrão esse arquivo 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 arquivos, 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 contêineres criados depois da alteração: recrie-os com docker compose up -d --force-recreate. Para liberar já o espaço de um registro gigante, como emergência: sudo truncate -s 0 $(docker inspect --format="{{.LogPath}}" nome-do-contêiner).
|
Cuidado com o docker system prune -a --volumes. É o comando que aparece em todos os guias e é o que mais vezes apaga um banco de dados. Só o use num servidor onde sabe exatamente 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 Servidor VPS com acesso root Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde R$ 46,20/mês (plano de 3 anos, com cupom) Ver planos |