割と頻繁に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 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.
もう一度作成すれば良いので、問題はないですね。
コメント