Docker: no space left on device
Dockerでディスク容量不足によるエラー
概要
Dockerを使用中にディスク容量が不足した場合に発生するエラーです。未使用のイメージ、コンテナ、ボリュームが蓄積することで発生します。
エラーメッセージ
no space left on device
Error response from daemon: no space left on device
write /var/lib/docker/...: no space left on device
failed to register layer: Error processing tar file... no space left on device
原因
- 未使用イメージの蓄積: 古いイメージが残っている
- 停止コンテナ: 停止したコンテナが削除されていない
- 未使用ボリューム: 孤立したボリュームが残っている
- ビルドキャッシュ: ビルドキャッシュが肥大化
- ログファイル: コンテナログの肥大化
- Dockerのストレージ: /var/lib/docker の肥大化
解決策
1. Docker使用量を確認
| |
2. 全ての未使用リソースを削除
| |
3. 未使用イメージの削除
| |
4. 停止コンテナの削除
| |
5. 未使用ボリュームの削除
| |
6. ビルドキャッシュの削除
| |
7. コンテナログの制限
| |
| |
8. docker-composeでログ制限
| |
9. 特定コンテナのログを削除
| |
10. Dockerのストレージ場所を変更
| |
| |
11. 定期的なクリーンアップ(cron)
| |
12. Docker Desktop(Mac/Windows)
| |
ディスク使用量の目安
| リソース | 対策 |
|---|---|
| イメージ | 定期的に prune、マルチステージビルド |
| コンテナ | –rm フラグで自動削除 |
| ボリューム | 不要なボリュームを定期削除 |
| ログ | サイズ制限を設定 |
| キャッシュ | CI/CDで定期的にクリア |
よくある間違い
docker system pruneだけではボリュームは削除されない(--volumesが必要)- 本番環境で重要なボリュームを誤って削除
- ログサイズ制限を設定せずに運用
- CI/CDパイプラインでクリーンアップを忘れる
関連エラー
参考リンク
Docker の他のエラー
この記事は役に立ちましたか?