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