Dockerで「no space left on device」エラーが出る時の対処法

Docker を使っていると、ある日突然次のようなエラーに遭遇することがあります。

no space left on device

これは ディスクの空き容量が不足している ことを示すエラーで、特に Docker のキャッシュや不要なイメージ・コンテナが積み重なることで発生しやすい問題です。本記事では、その原因と具体的な対処方法を整理します。

1. エラーの原因

Docker 環境でこのエラーが出る背景には、以下のような理由があります。

  • 不要なコンテナやイメージが大量に残っている
  • ビルドキャッシュが肥大化している
  • volume にデータが蓄積している
  • Mac や Windows の場合、Docker Desktop に割り当てられたディスク容量が不足している

特に開発中に docker build を繰り返していると、レイヤーキャッシュが積み重なり数 GB 単位でディスクを消費します。

2. 基本的な対処法

以下のコマンドで不要なデータを削除することで、多くの場合解決できます。

コンテナ・イメージ・ネットワーク・キャッシュをまとめて削除

docker system prune -a

※注意: 上記は 全ての停止中コンテナ、未使用のイメージ・ネットワークを削除 するため、本番環境で実行する際は慎重に判断してください。

volume を削除

docker volume prune

volume はアプリケーションのデータ永続化に利用されるため、削除するとデータが失われる点に注意してください。

ビルドキャッシュを削除

docker builder prune

長期間の開発で溜まったキャッシュを整理するのに有効です。

3. 実際の確認手順

ディスク使用状況の確認

docker system df

出力例:

TYPE            TOTAL     ACTIVE    SIZE
Images          25        3         8.2GB
Containers      10        2         500MB
Local Volumes   7         5         3.5GB
Build Cache     50        0         12.3GB

このようにどのリソースが容量を圧迫しているかを把握し、削除対象を決めると安全です。

4. Mac / Windows 特有の落とし穴

Docker Desktop を利用している場合、内部的には 仮想マシンに一定のディスクサイズが割り当てられている ため、ホスト側の空き容量があっても VM 内部で不足することがあります。Docker Desktop の設定画面から ディスクサイズを拡張 することで対応可能です。

また、~/Library/Containers/com.docker.docker/Data/ 配下(Macの場合)にログやキャッシュが肥大化しているケースもあり、場合によっては手動削除が必要になることもあります。

5. 実運用でのベストプラクティス

  • 定期的に docker system prune を実行し、不要リソースをクリーンアップする
  • CI/CD 環境ではビルドキャッシュを無制限に蓄積しないようにする
  • ボリュームを利用する場合は、データ肥大化に備えて監視を行う
  • Docker Desktop ではディスク割り当てを見直す

まとめ

「no space left on device」エラーは、Docker 利用時に頻発する ストレージ不足問題 です。ほとんどの場合、不要なイメージ・コンテナ・キャッシュを削除することで解消できます。ただし、本番環境ではデータ消失のリスクがあるため、削除対象をしっかり確認することが重要です。定期的なメンテナンスと監視を行い、快適な開発環境を維持しましょう。

参考

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