3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerクリーンアップ手順:不要なイメージとボリュームを削除する方法

Last updated at Posted at 2025-01-10

はじめに

現在プログラミングスクール「RUTENQ」で学習中の初学者です🔰
この記事では、Docker環境のローカルPCをクリーンアップする手順を共有します。
記載内容に誤りがあったり、より最適な方法やコマンドがあるかもしれません🙏
その際は教えていただけると幸いです。

なぜクリーンアップが必要なのか?

Dockerを使用して開発を続けていると、使用していないDockerリソース(イメージ、コンテナ、ボリューム、ネットワーク)がローカルPCにのこったままになります。
これらのリソースは、ローカルのリポジトリからソースコードを削除しても残ったままです。
そのため定期的にクリーンアップを実行して、不必要なオブジェクトを削除し、ストレージを解放することが必要です。

Chatgpt-4o解説 クリーンアップとは?

Dockerを使って開発を続けていると、不要なコンテナ、イメージ、ボリューム、ネットワークなどのリソースがローカルPCに溜まっていきます。これらを削除して、ディスク容量を確保し、環境を整理する作業を「クリーンアップ」と呼びます。
クリーンアップを定期的に行うことで、以下のようなメリットがあります:
・ディスク容量の節約: 不要なデータを削除し、ストレージを有効活用。
・開発環境の安定化: 古いデータや設定が原因で発生するトラブルを防止。
・パフォーマンス向上: 不要なリソースが減ることで、操作や処理のスピードが向上。
クリーンアップは、快適な開発環境を維持するための大切なメンテナンス作業です。

・クリーンアップを対象を要確認して、誤って必要なリソースを削除しないように注意しましょう。
・特にボリュームはデータベースなどの重要なデータを保持している場合があるため、慎重に確認してください。

実行した手順

最初に、以下のドキュメントを参考にしてクリーンアップを実行しました

使用していない Docker オブジェクトの削除(prune)
未使用のDockerオブジェクトを削除する
 
この手順で、ある程度の不要リソースをクリーンアップすることができました。
しかし、参照が残っているボリュームや特定のイメージなど、prune コマンドでは削除対象外となるリソースがあり、完全なクリーンアップには至りませんでした。
そのため、以下の手順で追加のクリーンアップを実施しました。

上記のドキュメントで紹介されている prune コマンドは、未使用リソースのみを安全に削除するよう設計されています。
安全にクリーンアップを行いたい場合は、上記ドキュメントの手順で十分だと思います。
これから紹介する手順では、削除対象を慎重に確認してから実行してください。

コンテナのクリーンアップ

1. コンテナを確認

$ docker ps 

※ -aオプションをつけることで、停止中のコンテナも全て表示します

$ docker ps -a

2. 使用していないコンテナを停止

$ docker stop <コンテナID>

3. 停止しているコンテナを一括削除

$ docker container prune

💡参考URL 
docker container prune

4. 再度コンテナを確認

$ docker ps 

イメージのクリーンアップ

1. イメージの確認

※-aオプションをつけることで、中間イメージも全て表示します

$ docker images -a

2. イメージを一括削除

$ docker rmi $(docker images -a -q)

💡参考URL docker rmi

3. 再度イメージの確認

$ docker images -a

ボリュームとネットワークのクリーンアップ

1. ボリュームの確認

$ docker volume ls

2. ネットワークの確認

$ docker network ls

3. 不要なボリュームとネットワークを削除

※デフォルトではボリュームが削除されないため、--volumesを付けることで未使用のボリューム削除を削除します。

docker system prune --volumes

💡参考URL docker system prune --volumes

4. 再度ボリュームとネットワークの確認

$ docker volume ls
$ docker network ls

pruneコマンドで未使用と判断されたボリュームのみを削除したため、一部のボリュームが削除対象外でした。
このような場合、以下のコマンドを使用してボリュームを手動で削除することが可能です。状況に応じてお好みの方法を選んで実行してください。

1. ボリュームをひとつずつ削除

$ docker volume rm <ボリューム名>

2.複数のボリュームを一括削除

$ docker volume rm <ボリューム名1> <ボリューム名2> <ボリューム名3>

3. 必要なボリュームを残して一括削除

※ボリューム1 という名前が含まれるボリュームを除き、すべてのボリュームを削除します。

$ docker volume ls -q | grep -v 'ボリューム1' |xargs docker volume rm

💡参考URL 
grep xargs

さいごに

Docker環境のクリーンアップ方法について、この記事でご紹介させていただきました。
参考URLも併せてご確認いただければ、より理解が深まると思います。
この記事が少しでも皆さまのお役に立てれば嬉しいです!🌱
最後までお読みいただき、ありがとうございました!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?