Wir betreiben eine selbst gehostete Discourse-Site auf DigitalOcean und haben eine 25 GB Festplatte. Ich habe gerade versucht, unser Discourse-Image zu aktualisieren, und die Meldung erhalten, dass mehr Speicherplatz benötigt wird, um fortzufahren. Nachdem wir das Docker-Image und die Container bereinigt haben, fehlen uns immer noch 0,4 GB.
Haben Sie Ratschläge, wie wir Speicherplatz sparen können? Sowohl um jetzt ein Update durchzuführen als auch um zukünftig Speicherplatz zu sparen. Ich weiß, dass wir bald die Größe ändern müssen, aber es wäre hilfreich, wenn wir mindestens ein weiteres Discourse-Image-Update durchführen könnten.
Wir nutzen die Backup-Funktionalität von DigitalOcean. Ich habe keine Option gesehen, eines unserer Backups manuell zu löschen.
Wie gehe ich dabei vor? Ich habe keine Programmiererfahrung, bin aber in der Lage zu verstehen, was zu tun ist und warum, nachdem ich Anweisungen erhalten habe.
Habe versucht, neu zu starten, aber keine Änderung.
Es ist wichtig zu verstehen, warum Sie zwischenzeitlich nicht markierte Images haben, die als <none> <none> angezeigt werden, um diese zu vermeiden, da Sie sie, wie Sie gesehen haben, nicht entfernen können, wenn sie in Gebrauch sind.
Der Grund, warum nicht markierte Images auftreten, ist, dass Sie ein Image erstellt haben, dann das Dockerfile geändert und dieses Image erneut erstellt haben, und es einige der Schichten aus dem vorherigen Build wiederverwendet hat. Jetzt haben Sie ein nicht markiertes Image, das nicht gelöscht werden kann, da einige seiner Schichten von einer neuen Version dieses Images verwendet werden.
Die Lösung ist:
Löschen Sie die neue Version des Images
Löschen Sie das nicht markierte Image und
Erstellen Sie die neue Version des Images neu, damit es alle Schichten besitzt.
Sie werden mit einem einzigen markierten Image zurückbleiben, das alle Schichten der vorherigen nicht markierten Images und des neuen Images enthält.
Ich hatte nicht erwartet, 2,64 GB in einem Docker-Image zu finden, daher versuche ich jetzt herauszufinden, was dort passiert. Wenn ich dieses Image überhaupt nicht benötige, sind wir definitiv weit davon entfernt, vergrößern zu müssen.
Haben Sie einen
./launcher cleanup
ausgeführt? Ich empfehle Ihnen jedoch, die Größe zu ändern. Ich bin überrascht, dass Sie es mit 25 GB so lange geschafft haben.
Haben Sie auch in shared/backups/default nachgesehen?
Ich würde den Backups von DigitalOcean auf keinen Fall vertrauen, um Ihr Forum zu sichern.
Wie lange? Ich sehe keinen Hinweis darauf – ich weiß, dass ich glücklich ein Forum mit 20 GB und ein anderes mit 25 GB betreibe.
Unter „shared“ haben Sie möglicherweise viele Sicherungsdaten (vielleicht in shared/standalone/backups/default). Möglicherweise haben Sie auch alte Datenbankkopien oder alte Protokolldateien. Ich empfehle Ihnen, Folgendes auszuführen: du -kx / | sort -n | tail -49
oder ähnliches.
Es ist fair zu erwähnen, dass Sie Zeit auf Kosten von Geld sparen können, indem Sie zu einer größeren Instanz wechseln. Oder Sie können den gegenteiligen Kompromiss eingehen.
Das beunruhigt mich ein wenig. DO hilft Ihnen vielleicht bei Backups Ihres gesamten Systems, aber wenn ich Sie wäre, wäre ich glücklicher, wenn ich wüsste, wie man Discourse-Backups erstellt und wie man eine sichere lokale Kopie erhält. Und wie man die Backups bereinigt. (Wenn DO aus irgendeinem unglücklichen Zufall Ihre Instanz und Ihr Konto löschen würde, möchten Sie, dass Ihre Daten das überleben.)
Wir verwenden ebenfalls die Discourse-Backup-Funktionalität und mir ist aufgefallen, dass wir die alten Backups dort nicht gelöscht hatten.
Nun, ich habe alle bis auf das neueste Backup über die Discourse-Oberfläche gelöscht und das neueste Backup auch auf meine lokale Festplatte heruntergeladen. Damit bin ich weniger als 100 MB davon entfernt, genügend Speicherplatz zu haben.
Hier ist, was ich bekomme, wenn ich diesen Befehl in var/discourse ausführe
Wobei {image_name} der Name des zu löschenden Images ist. Sie können auch die Image-ID zum Löschen des Images verwenden (z. B. docker rmi {image_id}). Dies ist das, was Sie benötigen, um ein Image mit dem Namen <none> zu löschen.
Nehmen wir zum Beispiel an, Sie haben die folgenden Images:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-new-image latest c18f86ab8daa 12 Sekunden her 393MB
<none> <none> b1ee72ab84ae Vor einer Minute 393MB
my-image latest f5a5f24881c3 2 Minuten her 393MB
Es ist möglich, dass das <none>-Image nicht gelöscht werden kann, da my-new-image Schichten davon verwendet. Was Sie tun müssen, ist:
Dies entfernt my-new-image:latest, das Schichten des <none>-Images wiederverwendet. Dann löscht es das <none>-Image unter Verwendung seiner Image-ID b1ee72ab84ae. Schließlich baut es my-new-image neu auf und erstellt alle benötigten Schichten.
Stellen Sie außerdem sicher, dass Sie keine gestoppten Container haben, die immer noch das <none> “unmarkierte” Image verwenden. Verwenden Sie docker ps -a, um alle Images anzuzeigen, einschließlich der beendeten. Wenn ja, verwenden Sie docker rm {container_id}, um den Container zu entfernen, und versuchen Sie dann erneut, das <none>-Image zu entfernen.
Das hat den Trick gemacht und ich habe auch die Richtlinie geändert!
Ich möchte immer noch das Problem mit dem \u003cnone\u003e-Bild auf den Grund gehen (da es lächerlich ist, dass es 2 GB+ Speicherplatz beansprucht), aber du hast mein dringendstes Problem gelöst, genügend Speicherplatz für das Upgrade zu schaffen! Danke!!