Algum conselho sobre como economizar espaço?

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.

4 curtidas

Você armazena backups localmente?
Se sim, talvez se livrar de alguns antigos possa ajudar. 0,4 GB (ou seja, 400 MB) deve ser gerenciável.

Você também pode tentar liberar algum espaço no sistema host.

1 curtida

tente reiniciar seu servidor e tente novamente se tiver certeza de que há espaço suficiente.

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.

Tentei reiniciar e nenhuma mudança.

Após executar sudo du -h --max-depth 1, estes são os meus resultados:

Tente remover objetos Docker não utilizados

1 curtida

Neste ponto, eu me pouparia o trabalho e faria o redimensionamento agora.

3 curtidas

Eu removi tudo, exceto volumes não utilizados, porque docker volume ls mostrou que tínhamos apenas um.

você tentou?

./launcher cleanup

1 curtida

Sim!

Eu investiguei um pouco mais nossas imagens do Docker com docker images -a e vi isto.

O que está acontecendo com <none>?

1 curtida

Algumas pesquisas me levaram a este comentário muito interessante.

rofranoJohn Rofrano

Nov '17

É 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.

~jr

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.

Você fez um

./launcher cleanup

Mas eu recomendo que você redimensione. Estou surpreso que você tenha chegado até aqui com 25 GB.

Além disso, você olhou em shared/backups/default

Eu definitivamente não confiaria nos backups da DigitalOcean como meio de backup do seu fórum.

2 curtidas

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.)

:woman_facepalming:t3: Nós também usamos a funcionalidade de backup do Discourse e percebi que não havíamos limpado os backups antigos .

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

656876  /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse/vendor
819624  /var/log/journal/e734ad1931dbee4740881cc15c9e7a9a
826292  /var/discourse/shared/standalone
826296  /var/discourse/shared
831476  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn/v6
831484  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn
831492  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache
832188  /var/discourse
845992  /lib/modules
850136  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse
850144  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home
991800  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff
991816  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765
994980  /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr/lib
1089092 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www/discourse
1089096 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www
1130168 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var
1177644 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff
1177660 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49
1224436 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
1224440 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www
1224444 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var
1234612 /lib
1248080 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff
1248096 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d
1342320 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr
1516440 /usr
1543656 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www/discourse
1543664 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www
1558580 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var
1659548 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff
1659564 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91
2040472 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr
2171304 /var/log/journal/d893af269dfb5f73239a5b6761d49ea0
2388612 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff
2388628 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6
2461904 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff
2461924 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058
3064672 /var/log/journal
3276268 /var/log
10107180        /var/lib/docker/overlay2
10131984        /var/lib/docker
10396840        /var/lib
14869684        /var
20007992        /

Recebi instruções adicionais sobre como lidar com o seguinte:

Os detalhes são:

rofranoJohn Rofrano

1

20h

O comando para remover uma imagem é:

docker rmi {image_name}

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 é:

docker rmi my-new-image:latest
docker rmi b1ee72ab84ae
docker built -t my-new-image .

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.

O que todos vocês acham?

Acho que você pode melhorar as coisas aqui:

Veja esta troca anterior:

e

3 curtidas

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!!

3 curtidas

Absolutamente verdade! Por enquanto, estou me divertindo muito aprendendo coisas novas, então o tempo vale a pena.