最終更新
リンドくん
たなべ先生、Dockerを使ってたらディスク容量がどんどん減っていくんですけど...これって普通なんですか?
たなべ
あぁ、それはDocker初心者あるあるだね!
Dockerは使っていくうちに不要なイメージやコンテナがどんどん溜まっていくんだ。でも心配しないで、docker system prune
っていう便利なコマンドがあるんだよ。
HackATAは、エンジニアを目指す方のためのプログラミング学習コーチングサービスです。 経験豊富な現役エンジニアがあなたの学習をサポートします。
✓ 質問し放題
✓ β版公開中(2025年内の特別割引)
Dockerを使い始めて数週間、気づいたらディスク容量が大幅に減っていた...という経験はありませんか?
これは決して珍しいことではなく、Dockerの仕組み上、ごく自然に起こる現象なのです。
Dockerを使用していると、以下のようなリソースが自動的に蓄積されていきます。
docker run
で起動したコンテナは、停止後も自動削除されないdocker pull
でダウンロードしたイメージや、ビルドの途中で生成されたイメージ特に開発環境では、試行錯誤を繰り返す中でイメージのビルドとコンテナの起動を何度も行うため、気づかないうちに大量の不要リソースが溜まってしまうのです。
実際、Dockerを数ヶ月使い続けると、数十GBものディスク容量が不要なリソースで占められることも珍しくありません。これが放置されると、ディスク容量不足でシステム全体の動作に支障をきたす可能性もあります。
リンドくん
じゃあ、その溜まった不要なリソースはどうやって削除すればいいんですか?
たなべ
それこそがdocker system prune
の出番なんだ!
このコマンドはDockerの不要リソースを一括で削除してくれる、まさにDocker版の大掃除ツールなんだよ。
docker system prune
は、Dockerが管理するリソースの中で、現在使用されていない不要なものを一括削除するコマンドです。
基本的な実行方法は非常にシンプルです。
このコマンドを実行すると、デフォルトで以下のリソースが削除されます。
実行すると、削除されるリソースのサイズが表示され、本当に削除してよいか確認が求められます。
ここでy
と入力すると、実際に削除が実行されます。
「prune」という単語は、園芸用語で「枝を剪定する」という意味です。
つまり、不要な枝(リソース)を切り落として、健全な状態を保つというイメージから来ています。
Dockerにおいても、定期的に不要なリソースを「剪定」することで、システムを健全な状態に保つことができるのです。
リンドくん
でも、大事なデータまで消えちゃったりしませんか?ちょっと怖いんですけど...
たなべ
その心配はもっともだね!
でも安心して。実行前に必ず確認が求められるし、実際に削除される前に何が削除されるか確認することもできるんだよ。
docker system prune
を安全に実行するための手順を紹介します。
まず、どのくらいのリソースがシステムに存在するかを確認しましょう。
このコマンドを実行すると、以下のような情報が表示されます。
この表示から、削除可能(RECLAIMABLE)なリソースの量を事前に把握できます。
何が削除されるか具体的に知りたい場合は、以下のコマンドで確認できます。
テスト環境や自動化スクリプトで使用する場合、確認プロンプトをスキップすることもできます。
または
ただし、本番環境では必ず確認ありで実行することを強くおすすめします。
デフォルトのdocker system prune
では、使用中でないイメージの一部は削除されません。
より徹底的に削除したい場合は、以下のオプションを使用します。
または
このオプションを付けると、どのコンテナからも使用されていないすべてのイメージが削除対象に含まれます。
つまり、タグ付けされたイメージであっても、現在実行中のコンテナで使用されていなければ削除されます。
注意点として、-a
オプションを使用すると、次回コンテナを起動する際にイメージを再度ダウンロードする必要が生じる可能性があります。
リンドくん
先生、docker system prune
実行したら、必要なイメージまで消えちゃったんですけど...
たなべ
それは-a
オプションを使ったからかもしれないね。
大丈夫、よくある失敗だから、解決策と予防法を教えるよ!
症状: -a
オプションで実行したら、使いたかったイメージまで削除されてしまった
解決法
予防策
-a
オプションは慎重に使用する症状: --volumes
オプションで実行したら、データベースのデータが消えた
解決法
残念ながら、一度削除されたボリュームのデータは復元できません。
バックアップがある場合はそこから復元してください。
予防策
症状: 大量のリソースがあり、削除に非常に長い時間がかかる
解決法
症状: permission denied
などのエラーが表示される
解決法
リンドくん
なるほど!定期的に掃除すれば、ディスク容量の心配がなくなりますね。
たなべ
その通り!
月に1回でも定期的にpruneすることで、Dockerを快適に使い続けられるよ。最初は怖いかもしれないけど、慣れれば簡単だからね。
docker system prune
コマンドは、Dockerを使い続ける上で欠かせないメンテナンスツールです。
重要なポイントをおさらいしましょう。
docker system df
で現状確認すること-a
オプションは慎重に使用し、重要なイメージが削除されないよう注意--volumes
オプションは特に注意が必要。データ消失の恐れあり開発環境では以下のようなスケジュールがおすすめです。
docker system prune
(基本形)docker system prune -a
(徹底クリーンアップ)docker system prune -a --volumes
(完全クリーンアップ)Dockerの容量問題で悩んでいる方、これから本格的にDockerを使い始める方は、ぜひこのdocker system prune
コマンドを活用してください。
快適なDocker環境を維持するには、定期的なメンテナンスが何より重要です。
最初は少し緊張するかもしれませんが、慣れればルーティン作業として簡単に実施できるようになります。