海ミハ車両区

宮原太聖(Miha)の雑記帳。おおむね週1回更新です。

Mastodon v2.7.4へアップデートしました&Dockerのゴミデータを一発で削除する方法

github.com

新しいバージョンが出たら、都度バージョンアップする方針だったはずなのですが、新しいバージョンが出てることに気付かず、バージョンアップが遅れてしまっていました。v2.7.1が最新だと思っていたら、気付いたらもうv2.7.4ですよ。参ったね*1

本来なら、1つ1つバージョンアップしていくのが安全なのかもですが、例によって鯖缶工場でお伺いした所、v1.5.1から一気に上げても別段問題は発生しなかったようなので、一気に上げてしまいました。

今回のバージョンアップは、管理用のシステムの改良や、バグ修正などが主なようで、ユーザーの使い勝手に関わる部分の変更はあまり無いようです。

 

バージョンアップのやり方はいつも通り。ただ、git checkout v2.7.4とします。

で、概ね順調に作業できていたのですが、buildの所でエラーが。

f:id:t_miyahara:20190308083415p:plain

私これ、一番下のERRORの所ばかり見てて、「buildが失敗した。returned a non-zero code: 1って何だ?」ってなったんですが、すぐ上の赤字の所に理由が書いてあったんですね。「No space left on device」。「容量足りねぇぞゴラァ」ってわけ(^^;)

実はこれを始める前、「df -h」のコマンドで空き容量を確認していたのですが、vdaの残りが1.3GBになっていて、気にはなっていたんですね。で、再びdf -hやってみた所、100%。やっぱり容量が無いようです。あちゃー。

 

で、ここで教えて戴いたのが、Dockerの便利なコマンド「system prune」。

ensekitt.hatenablog.com

docs.docker.com

sudo docker system prune -f

最後のオプション「-f」は、「確認を省略しますよ」という意味です。

このコマンドを使うと、動いてないプログラムやファイルが一掃されます。私の場合、しばらく待ってると「Total reclaimed space :7.257GB」と出ました。滅茶苦茶あるやん……。

ついでに、「sudo du -hd 1 /」でどのフォルダが容量食ってるのか確認しようとしたのですが、なぜかフリーズしたようで1時間以上も止まった状態になってしまいました。仕方が無いので、一度接続を解除し、再び接続して、buildからやり直すことに。すると、さっきのことが嘘みたいにスムーズに進みました。

 

さて、このsystem pruneというコマンド、動いていないプログラムとかファイルとか、あと参照されていない画像とかを一括で削除するコマンドです。ということは、たとえば、「必要なプログラムなんだけど、とりあえず今は切っとくか」って切っていたプログラムとかも削除されてしまうかもしれないわけ。それはちょっと困る。

そんなわけで、webとかsidekiqとかを止めずに、動かしてる状態でsystem pruneをやった方が良さげですね。「あー、なんか肥大化してきたなぁ」って感じたら、適宜やっとくと良いかもです。

……これを思うと、vdaとvdbにパーティションを分けたのは、勉強の意味では良かったかもしれません。もしパーティションが分かれていなかったら、肥大化の原因が古いdockerイメージだと気付くのが遅れて、先にDBをWasabiとかに移して「あれ? 言うてそんなに減らないぞ……?」→「あー、肥大化しとるやんけ。原因これだ」ってなってたかも。

*1:再発防止のために、リリースのページをRSSに登録しました。これで見逃さないハズ。