スペースを節約するためのアドバイスはありますか?

DigitalOceanでセルフホストのDiscourseサイトを運用しており、ディスク容量は25GBです。Discourseのイメージを更新しようとしたところ、「続行するにはさらに容量が必要です」というメッセージが表示されました。Dockerイメージとコンテナをクリーンアップした後でも、容量が0.4GB不足しています。

容量を節約するためのアドバイスはありますか?今回の更新を乗り切るため、そして将来的に容量を節約するためです。すぐにディスクサイズを拡張する必要があることは承知していますが、少なくともあと1回はDiscourseのイメージ更新を乗り切れるようにしたいです。

「いいね!」 4

ローカルにバックアップを保存していますか?
もしそうなら、古いものをいくつか削除すると役立つかもしれません。0.4GB(つまり400MB)なら管理可能でしょう。

ホストシステム上のスペースもクリーンアップしてみてください。

「いいね!」 1

サーバーを再起動してから、十分な空き容量があることを確認してからもう一度お試しください。

DigitalOceanのバックアップ機能を使用しています。バックアップを手動で削除するオプションは見つかりませんでした。

どのようにすればよいでしょうか?プログラミング経験はありませんが、指示があれば、何をするのか、なぜそれをするのかを理解することができます。

再起動を試しましたが、変化はありませんでした。

sudo du -h --max-depth 1 を実行した後の結果は以下の通りです。

未使用のDockerオブジェクトを削除する

「いいね!」 1

この時点で、手間を省くために今すぐリサイズ作業を行うでしょう。

「いいね!」 3

docker volume ls で1つしかないと表示されたため、未使用のボリュームを除くすべてを削除しました。

試しましたか?

./launcher cleanup

「いいね!」 1

はい!

さらに docker images -a で Docker イメージを調べたところ、これが見つかりました。

<none> はどういうことでしょうか?

「いいね!」 1

Googleで検索したところ、この非常に興味深いコメントを見つけました。

rofranoJohn Rofrano

Nov '17

使用されているため削除できないことを確認したように、中間タグなしイメージが<none> <none>として表示される理由を理解することは、それらを回避するために重要です。

タグなしイメージが発生する理由は、イメージをビルドし、次にDockerfileを変更してそのイメージを再度ビルドした場合、前のビルドの一部のレイヤーが再利用されるためです。現在、一部のレイヤーがそのイメージの新しいバージョンによって使用されているため削除できないタグなしイメージがあります。

解決策は次のとおりです。

  • イメージの新しいバージョンを削除する
  • タグなしイメージを削除し、
  • 新しいバージョンのイメージを再ビルドして、すべてのレイヤーを所有するようにします。

前のタグなしイメージと新しいイメージのすべてのレイヤーを含む単一のタグ付きイメージが残ります。

~jr

のDockerイメージに2.64 GBも含まれているとは思っていなかったので、現在その原因を調べています。もしこのイメージが全く必要ないのであれば、サイズ変更が必要な状況からは程遠いと言えるでしょう。

実行したか?

./launcher cleanup

しかし、リサイズすることをお勧めします。25GBでここまでやってこられたことに驚いています。

また、shared/backups/defaultを確認しましたか?

DigitalOceanのバックアップをフォーラムのバックアップ手段として信頼することは絶対にありません。

「いいね!」 2

どのくらいですか?そのヒントは見当たりません。20Gでフォーラムを1つ、25Gで別のフォーラムを元気に稼働させていることは知っています。

共有フォルダには、多くのバックアップデータ(おそらく shared/standalone/backups/default にある)がある可能性があります。古いデータベースのコピーや古いログファイルがある可能性もあります。以下を実行することをお勧めします。
du -kx / | sort -n | tail -49
または同様のコマンド。

インスタンスを大きくすることで、お金を節約する代わりに時間を節約できることに注意してください。または、その逆のトレードオフを行うこともできます。

これは少し心配です。DOはシステム全体のバックアップを支援してくれるかもしれませんが、私ならDiscourseのバックアップ方法と安全なローカルコピーの取得方法を知っている方が安心です。そして、バックアップの削除方法も。 (もしDOがあなたのインスタンスとアカウントを誤って削除した場合、データはそれを生き残らせたいでしょう。)

:woman_facepalming:t3: 私たちもDiscourseのバックアップ機能を使用していますが、そこで古いバックアップをクリアしていなかったことに気づきました。

Discourseのインターフェースを使って、最新のバックアップ以外のすべてを削除し、最新のバックアップをローカルドライブにダウンロードしました。これで、容量不足まであと100MB未満になりました。

var/discourseでこのコマンドを実行した結果は以下の通りです。

656876  /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
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
898764  /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr/lib
966656  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www/discourse
966660  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www
966664  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var
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        /

追加の指示を受けました。以下にその内容を示します。

詳細は以下の通りです。

rofranoJohn Rofrano

1

20h

イメージを削除するコマンドは次のとおりです。

docker rmi {image_name}

ここで {image_name} は削除したいイメージの名前です。イメージ ID を使用してイメージを削除することもできます(例: docker rmi {image_id})。これは、\u003cnone\u003e という名前のイメージを削除する場合に必要になります。

例えば、次のようなイメージがあるとします。

REPOSITORY           TAG        IMAGE ID       CREATED              SIZE
my-new-image         latest     c18f86ab8daa   12 seconds ago       393MB
\u003cnone\u003e               \u003cnone\u003e     b1ee72ab84ae   About a minute ago   393MB
my-image             latest     f5a5f24881c3   2 minutes ago        393MB

my-new-image がそのイメージの一部レイヤーを再利用しているため、\u003cnone\u003e イメージが削除できない可能性があります。次を行う必要があります。

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

これは、\u003cnone\u003e イメージからレイヤーを再利用している my-new-image:latest を削除します。次に、イメージ ID b1ee72ab84ae を使用して \u003cnone\u003e イメージを削除します。最後に、必要なすべてのレイヤーを作成して my-new-image を再ビルドします。

また、\u003cnone\u003e 「タグなし」イメージをまだ使用している停止中のコンテナがないことを確認してください。すべてのイメージ(終了したものを含む)を表示するには docker ps -a を使用します。もしあれば、docker rm {container_id} を使用してコンテナを削除し、再度 \u003cnone\u003e イメージの削除を試みてください。

皆さん、どう思いますか?

改善できる点があると思います。

以前のやり取りをご覧ください。

そして

「いいね!」 3

これでうまくいき、ポリシーも変更しました!
まだ<none>イメージの問題を特定したいと思っています(2GB以上のスペースを占有しているのはばかげています)、しかし、アップグレードに必要な十分なスペースを作成するという私の最も差し迫った問題を解決してくれました!ありがとうございます!!

「いいね!」 3

まったくその通りです!今のところ、新しいことを学ぶのがとても楽しいので、時間に見合う価値があります。