[docker]未使用リソースを全て削除する方法があった!docker-compose buildで「no space left on device」というエラーが出たので試してみました

docker
スポンサーリンク

割と頻繁にdocker-compose buildをしていた時、なぜかビルドに失敗することがありました。
エラーメッセージを見てみると、何やら「no space left on device」という文字が…
調べてみると、dockerのリソース不足である可能性があり、リソースの削除を試してみたところビルドが通るようになりました。

この記事では、dockerのリソースを削除するコマンドを紹介します。

dockerの未使用リソースを削除するコマンド

全てのリソースを削除

未使用のデータを全て削除したいときは、次のコマンドを使います。

未使用のリソースを全て削除

以下のリソースが削除されるようです。

  • 停止しているコンテナ
  • 使用されていないネットワーク
  • 使用されていないイメージ
  • buildキャッシュ

コマンド実行すると、本当に削除していいか聞かれます。

 % docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y


Total reclaimed space: 15.81GB

私の環境には未使用のリソースが15.81GBもあったのか…

個別に削除する場合

それぞれ、未使用のコンテナやネットワークなどを個別に削除することもできます。

コンテナー

停止中のコンテナーを削除します。

docker container prune

docker container prune | Docker ドキュメント

イメージ

未使用のイメージを削除します。

docker image prune

docker image prune | Docker ドキュメント

ボリューム

未使用のローカルボリュームを削除します。

docker volume prune

docker volume prune | Docker ドキュメント

ネットワーク

未使用のネットワークをすべて削除します。

docker network prune

docker network prune | Docker ドキュメント

ビルドキャッシュ

ビルドキャッシュの削除には、2つのAPIがありました。

docker builder prune

docker builder prune | Docker ドキュメント

docker builderはバージョン1.39以上で使用できます

docker buildx prune

docker buildx prune | Docker ドキュメント

ちょっと困ったこと

docker system pruneで全て一括削除をしたところ、dockerで使用する予定のネットワークも削除しちゃいました。

% docker-compose up             
ERROR: Network docker-compose_default declared as external, but could not be found. Please create the network manually using `docker network create docker-compose_default` and try again.

もう一度作成すれば良いので、問題はないですね。

コメント

タイトルとURLをコピーしました