Docker

JenkinsでDockerイメージを作るときはディスクの枯渇に注意

ある日、森の中、クマさんに、出会った・・・♪

じゃなくて・・・とある日、Jenkins でジョブの設定を保存した際にエラーが発生するようになった。

No space left on device

space だけに注目したので、最初は設定画面の入力値に余分な半角スペースが入っているのかと思った。

しかし、よくよくエラーメッセージを読んでみるとデバイスの領域を指しているようだ。

今回はこの問題を解決していきます。

原因はディスクの空き容量だった

同じエラーでも原因は様々だと思いますが、今回はメッセージの通りディスクの空きがないことでビンゴ。

実際にディスクの状態を見てみるとこんな感じ。
(値は少し調整しています)

この状態で、よく Jenkins も起動してるなってことで、誰がディスクを食い荒らしているのか原因を探ります。

純粋にルートディレクトリから見ていくと、どうやら /var/lib 配下が怪しいところに行き着きます。

ってことは、/var/lib/jenkins 配下にあるワークスペースかなっと思いきや、犯人は /var/lib/docker 配下でした。

不要な Docker イメージが大量にあるので、ここを消し去ってあげましょう。

不要なDockerイメージの削除

Docker イメージの削除方法はいろいろとありますが、docker のバージョンが 18 系だったので、以下のコマンドが利用できます。

docker system prune -af –volumes

Jenkins サーバ上では Docker コンテナの作成はするものの、起動はしていないので全削除で問題ありません。

このコマンドで一気にディスクの空き容量を確保できました。

うーん、掃除は大事ですね。cron に仕込んでおかなければ・・・。