Executamos um site Discourse auto-hospedado na DigitalOcean e temos um Disco de 25 GB. Acabei de tentar atualizar nossa imagem do Discourse e recebi uma mensagem de que você precisará de mais espaço para continuar. Após limpar a imagem e os contêineres do docker, ainda faltam 0,4 GB.
Algum conselho sobre como economizar espaço? Tanto para atualizar agora quanto para economizar espaço no futuro. Sei que precisaremos redimensionar em breve, mas seria útil passar por pelo menos mais uma atualização de imagem do Discourse.
Usamos a funcionalidade de backup do DigitalOcean. Não vi uma opção para excluir manualmente um de nossos backups.
Como eu faria isso? Sou alguém que não tem experiência em programação, mas sou capaz de entender o que fazer e por que estou fazendo depois de receber algumas instruções.
É importante entender por que você tem imagens intermediárias sem tag aparecendo como <none> <none> para evitá-las, pois, como você viu, não é possível removê-las se estiverem em uso.
A razão pela qual imagens sem tag acontecem é porque você construiu uma imagem, depois alterou o Dockerfile e construiu essa imagem novamente, e ela reutilizou algumas das camadas da compilação anterior. Agora você tem uma imagem sem tag que não pode ser excluída porque algumas de suas camadas estão sendo usadas por uma nova versão dessa imagem.
A solução é:
Excluir a nova versão da imagem
Excluir a imagem sem tag e
Recriar a nova versão da imagem para que ela possua todas as camadas.
Você ficará com uma única imagem com tag que contém todas as camadas das imagens anteriores sem tag e a nova imagem.
Eu não esperava encontrar 2,64 GB em uma imagem Docker <none>, então agora estou tentando descobrir o que está acontecendo lá. Se eu não precisar dessa imagem, então definitivamente estamos longe de precisar redimensionar.
Por quanto tempo? Não vejo nenhuma pista disso - eu sei que estou executando felizmente um fórum em 20 GB e outro em 25 GB.
Em compartilhado, você pode ter muitos dados de backup (talvez em shared/standalone/backups/default). Você também pode ter cópias antigas do banco de dados ou arquivos de log antigos. Eu recomendo que você execute du -kx / | sort -n | tail -49
ou similar.
É justo notar que você pode economizar tempo, à custa de dinheiro, mudando para uma instância maior. Ou você pode fazer a troca oposta.
Isso me preocupa um pouco. O DO pode muito bem ajudá-lo com backups de todo o seu sistema, mas se fosse eu, ficaria mais feliz em saber como fazer backups do Discourse e como obter uma cópia local segura. E como podar os backups. (Se por algum azar o DO deletasse sua instância e sua conta, você gostaria que seus dados sobrevivessem a isso.)
Nós também usamos a funcionalidade de backup do Discourse e percebi que não havíamos limpado os backups antigos lá.
Bem, eu excluí todos, exceto o backup mais recente usando a interface do Discourse e também baixei o backup mais recente para o meu disco local. Isso me deixa a menos de 100 MB de ter espaço suficiente.
Aqui está o que eu obtenho quando executo esse comando em var/discourse
Onde {image_name} é o nome da imagem que você deseja excluir. Você também pode usar o ID da imagem para excluir a imagem (por exemplo, docker rmi {image_id}). É isso que você precisará usar para excluir uma imagem com o nome <none>.
Por exemplo, digamos que você tenha as seguintes imagens:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-new-image latest c18f86ab8daa 12 segundos atrás 393MB
<none> <none> b1ee72ab84ae Cerca de um minuto atrás 393MB
my-image latest f5a5f24881c3 2 minutos atrás 393MB
É possível que a imagem <none> não possa ser excluída porque my-new-image está usando algumas camadas dela. O que você precisa fazer é:
O que isso faz é remover my-new-image:latest, que está reutilizando camadas da imagem <none>. Em seguida, exclui a imagem <none> usando seu ID de imagem b1ee72ab84ae. Finalmente, reconstrói my-new-image, criando todas as camadas necessárias.
Verifique também se você não tem contêineres parados que ainda estão usando a imagem <none> “sem tag”. Use docker ps -a para ver todas as imagens, incluindo as que foram encerradas. Se for o caso, use docker rm {container_id} para remover o contêiner e, em seguida, tente remover a imagem <none> novamente.
Isso resolveu o problema e eu também mudei a política!
Ainda quero investigar o problema com a imagem <none> (já que é ridículo que ela ocupe mais de 2 GB de espaço), mas você resolveu meu problema mais imediato de criar espaço suficiente para atualizar! Obrigado!!