🐳
Docker の容量が不足して no space left on device と出た際のメモ
問題
- docker compose でビルドした際、
Error response from daemon: failed to update store for object type *libnetwork.Endpoint: write /var/lib/docker/network/files/local-kv.db: no space left on device
というエラー - 不要なデータを削除してストレージを空ける必要があるとのこと。
解決フロー
1. docker system df でストレージ容量を確認
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 7 9.673GB 3.237GB (33%)
Containers 7 1 151.2MB 151MB (99%)
Local Volumes 84 4 80.8MB 13.6MB (16%)
Build Cache 79 0 311.3MB 311.3MB
- Containers がめちゃくちゃ容量を圧迫してる…?
docker container prune
で停止中のコンテナを削除
2. $ docker container prune
-
WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N]
と出てきて、Docker初心者は一瞬いいのかなと焦りましたがOK -
docker-compose.yml
に記述されているコンテナは、再度docker compose up
を実行すれば問題なく再作成されて実行される🙆
注意
- 永続化されていないデータは失われる可能性がある
- コンテナ内に直接保存しているデータ(例えば、データベースの内容)が永続化されていない場合、停止したコンテナを削除するとそのデータも失われる
- データが失われないように、
docker-compose.yml
で ボリュームをマウント(volumesセクション)しているか確認する
docker-compose.yml
services:
db:
image: postgres
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
参考
Discussion