(備忘)Dify Update「no space left on device」エラー
経緯
Difyのアップデート(0.8.3 -> 0.9.1)を実施後、docker compose up -d にて起動中に「no space left on device」(デバイスに空き領域がありません)というエラーが発生。
記事の目的
「やったこと」と「結果」の共有であり、「解決手段」の提供ではありません。実施においては個人の責任と判断でお願いいたします。
情報収集
まず以下サイトを参考にさせていただきました。
参考情報
この情報から、同メッセージには以下の2パターンがあることがわかります。
ディスク容量の不足
i nodeの枯渇
Felo@OpenAI o1-previewに聞いてみた
~ここから Felo@Open AI o1-preview の回答~
※回答には判断が必要なものもあるのでそのまま実行しないでください。
Dockerでコンテナが「no space left on device」というエラーで起動できない場合、主な原因とその対策を以下にまとめます。
主な原因
ホストマシンのディスク容量不足
ホストマシンのディスクがいっぱいになっているため、新しいコンテナやイメージを作成できない。
Dockerのストレージドライバの制限
使用しているストレージドライバ(例:overlay2、aufsなど)が特定の制限に達している。
未使用のイメージやコンテナの蓄積
不要なイメージや停止中のコンテナが多く残っているため、ディスクスペースを圧迫している。
ボリュームの蓄積
Dockerボリュームが大量に作成されているため、ディスクスペースを消費している。
ログファイルの肥大化
コンテナのログファイルが大きくなりすぎて、ディスクスペースを圧迫している。
一時ファイルの蓄積
Dockerが使用する一時ファイルやキャッシュが蓄積されているため、ディスクスペースを消費している。
解決策
ディスク使用状況の確認
`df -h` コマンドでディスクの使用状況を確認します。
不要なイメージやコンテナの削除
未使用のイメージを削除: `docker image prune`
未使用のコンテナを削除: `docker container prune`
未使用のネットワークを削除: `docker network prune`
未使用のボリュームを削除: `docker volume prune`
すべての未使用リソースを一括削除: `docker system prune`
ボリュームの確認と削除
ボリュームのリストを表示: `docker volume ls`
不要なボリュームを削除: `docker volume rm <volume_name>`
ログの管理
コンテナのログ設定を見直し、必要に応じてログのローテーションを設定します。
ログファイルのサイズを制限するために、`docker-compose.yml` で `logging` オプションを設定します。
ストレージの拡張
必要に応じて、ホストマシンのディスク容量を増やします。
一時ファイルの削除
Dockerの一時ファイルやキャッシュを削除します。
Dockerのキャッシュをクリア: `docker builder prune`
これらの手順を実施することで、「no space left on device」エラーを解消できる可能性があります。
~ Felo の回答 以上 ~
対処
ディスクの利用状況確認
今回 i node は問題なく、/dev/vda1( / )で容量を圧迫(98% Used)していることがわかります。
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 391M 2.1M 389M 1% /run
efivarfs 256K 89K 163K 36% /sys/firmware/efi/efivars
/dev/vda1 96G 94G 2.9G 98% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 881M 112M 707M 14% /boot
/dev/vda15 105M 6.1M 99M 6% /boot/efi
tmpfs 391M 16K 391M 1% /run/user/0
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 500401 1080 499321 1% /run
efivarfs 0 0 0 - /sys/firmware/efi/efivars
/dev/vda1 12976128 2355405 10620723 19% /
tmpfs 500401 1 500400 1% /dev/shm
tmpfs 500401 3 500398 1% /run/lock
/dev/vda16 58496 604 57892 2% /boot
/dev/vda15 0 0 0 - /boot/efi
tmpfs 100080 35 100045 1% /run/user/0
Dockerイメージ確認
古いバージョンからTagなしのものまでいっぱいあります。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
langgenius/dify-web 0.9.1 xxxxxxxxxxxx 4 days ago 236MB
langgenius/dify-web 0.8.3 xxxxxxxxxxxx 2 weeks ago 235MB
langgenius/dify-api 0.8.3 xxxxxxxxxxxx 2 weeks ago 2.68GB
langgenius/dify-sandbox 0.2.9 xxxxxxxxxxxx 3 weeks ago 608MB
langgenius/dify-web 0.8.2 xxxxxxxxxxxx 3 weeks ago 234MB
langgenius/dify-api 0.8.2 xxxxxxxxxxxx 3 weeks ago 2.68GB
langgenius/dify-web 0.7.3 xxxxxxxxxxxx 4 weeks ago 234MB
langgenius/dify-api 0.7.3 xxxxxxxxxxxx 4 weeks ago 2.49GB
langgenius/dify-web 0.7.1 xxxxxxxxxxxx 6 weeks ago 233MB
langgenius/dify-api 0.7.1 xxxxxxxxxxxx 6 weeks ago 2.34GB
langgenius/dify-sandbox 0.2.6 xxxxxxxxxxxx 6 weeks ago 513MB
langgenius/dify-api 0.7.0 xxxxxxxxxxxx 7 weeks ago 2.34GB
langgenius/dify-web 0.7.0 xxxxxxxxxxxx 7 weeks ago 233MB
langgenius/dify-api 0.6.16 xxxxxxxxxxxx 8 weeks ago 2.28GB
langgenius/dify-web 0.6.16 xxxxxxxxxxxx 8 weeks ago 232MB
langgenius/dify-web 0.6.15 xxxxxxxxxxxx 2 months ago 232MB
langgenius/dify-api 0.6.15 xxxxxxxxxxxx 2 months ago 2.3GB
myapp-streamlit latest xxxxxxxxxxxx 2 months ago 590MB
langgenius/dify-web 0.6.13 xxxxxxxxxxxx 2 months ago 230MB
langgenius/dify-api 0.6.13 xxxxxxxxxxxx 2 months ago 2.26GB
firecrawl-worker latest xxxxxxxxxxxx 3 months ago 1.63GB
firecrawl-api latest xxxxxxxxxxxx 3 months ago 1.63GB
firecrawl-playwright-service latest xxxxxxxxxxxx 3 months ago 1.29GB
langgenius/dify-web 0.6.12-fix1 xxxxxxxxxxxx 3 months ago 230MB
langgenius/dify-api 0.6.12-fix1 xxxxxxxxxxxx 3 months ago 2.48GB
langgenius/dify-web 0.6.12 xxxxxxxxxxxx 3 months ago 230MB
langgenius/dify-api 0.6.12 xxxxxxxxxxxx 3 months ago 2.48GB
traefik latest xxxxxxxxxxxx 3 months ago 172MB
nginx alpine xxxxxxxxxxxx 3 months ago 43.2MB
langgenius/dify-web 0.6.11 xxxxxxxxxxxx 3 months ago 231MB
langgenius/dify-api 0.6.11 xxxxxxxxxxxx 3 months ago 2.62GB
n8nio/n8n latest xxxxxxxxxxxx 3 months ago 593MB
certbot/certbot latest xxxxxxxxxxxx 4 months ago 117MB
langgenius/dify-web 0.6.10 xxxxxxxxxxxx 4 months ago 231MB
langgenius/dify-api 0.6.10 xxxxxxxxxxxx 4 months ago 2.59GB
app-web latest xxxxxxxxxxxx 4 months ago 6.66GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
<none> <none> xxxxxxxxxxxx 4 months ago 6.44GB
langgenius/dify-sandbox 0.2.1 xxxxxxxxxxxx 4 months ago 409MB
<none> <none> xxxxxxxxxxxx 4 months ago 6.29GB
langgenius/dify-api 0.6.9 xxxxxxxxxxxx 4 months ago 1.91GB
langgenius/dify-web 0.6.9 xxxxxxxxxxxx 4 months ago 231MB
redis alpine xxxxxxxxxxxx 4 months ago 40.7MB
langgenius/dify-sandbox 0.2.0 xxxxxxxxxxxx 4 months ago 409MB
postgres 15-alpine xxxxxxxxxxxx 4 months ago 246MB
langgenius/dify-web latest xxxxxxxxxxxx 4 months ago 229MB
langgenius/dify-api latest xxxxxxxxxxxx 4 months ago 1.83GB
nginx latest xxxxxxxxxxxx 5 months ago 188MB
~<略>~
古いイメージの確認と削除
確認方法
Dockerの未使用リソースをまとめて削除も出来ますが、まずはimageから
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:7c60e7098499cd0ca3461d1e089cd39659eb3709bceafd85e46cc927db237d5e
deleted: sha256:9672f851928faed80791511d958f3c10fe021ac631405d0cd863a4d9f7b57794
deleted: sha256:e5b52fd05a9810c766ad361eb976cdf538feef478f6e5b52180ff74f514dc221
deleted: sha256:af2c0a7a7d36e444dbe94fe20cb99d27316987aa52a28570ae5b89a790f6b3fe
deleted: sha256:dc9d50dd4a336cf729da23ee6c35d50f070bd5b5a1b22ccc8f255a09270a36c3
deleted: sha256:3fe18313cc3cb982bfe9824631bd6a7d162d20aea20eaca703fecde29a2ec04b
deleted: sha256:298a0531e9f568dbcdfafe6f616d93774a140807c45055511095fdd9e3eb267b
deleted: sha256:3af49aa7279c239e4514e71bcf4732ef542e314e07e29bc03fc703fa17d1634c
Total reclaimed space: 0B
$
タグなしのイメージが削除されました。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
langgenius/dify-web 0.9.1 xxxxxxxxxxxx 4 days ago 236MB
langgenius/dify-web 0.8.3 xxxxxxxxxxxx 2 weeks ago 235MB
langgenius/dify-api 0.8.3 xxxxxxxxxxxx 2 weeks ago 2.68GB
langgenius/dify-sandbox 0.2.9 xxxxxxxxxxxx 3 weeks ago 608MB
langgenius/dify-web 0.8.2 xxxxxxxxxxxx 3 weeks ago 234MB
langgenius/dify-api 0.8.2 xxxxxxxxxxxx 3 weeks ago 2.68GB
langgenius/dify-web 0.7.3 xxxxxxxxxxxx 4 weeks ago 234MB
langgenius/dify-api 0.7.3 xxxxxxxxxxxx 4 weeks ago 2.49GB
langgenius/dify-web 0.7.1 xxxxxxxxxxxx 6 weeks ago 233MB
langgenius/dify-api 0.7.1 xxxxxxxxxxxx 6 weeks ago 2.34GB
langgenius/dify-sandbox 0.2.6 xxxxxxxxxxxx 6 weeks ago 513MB
langgenius/dify-api 0.7.0 xxxxxxxxxxxx 7 weeks ago 2.34GB
langgenius/dify-web 0.7.0 xxxxxxxxxxxx 7 weeks ago 233MB
langgenius/dify-api 0.6.16 xxxxxxxxxxxx 8 weeks ago 2.28GB
langgenius/dify-web 0.6.16 xxxxxxxxxxxx 8 weeks ago 232MB
langgenius/dify-web 0.6.15 xxxxxxxxxxxx 2 months ago 232MB
langgenius/dify-api 0.6.15 xxxxxxxxxxxx 2 months ago 2.3GB
myapp-streamlit latest xxxxxxxxxxxx 2 months ago 590MB
langgenius/dify-web 0.6.13 xxxxxxxxxxxx 2 months ago 230MB
langgenius/dify-api 0.6.13 xxxxxxxxxxxx 2 months ago 2.26GB
firecrawl-api latest xxxxxxxxxxxx 3 months ago 1.63GB
firecrawl-worker latest xxxxxxxxxxxx 3 months ago 1.63GB
firecrawl-playwright-service latest xxxxxxxxxxxx 3 months ago 1.29GB
langgenius/dify-web 0.6.12-fix1 xxxxxxxxxxxx 3 months ago 230MB
langgenius/dify-api 0.6.12-fix1 xxxxxxxxxxxx 3 months ago 2.48GB
langgenius/dify-web 0.6.12 xxxxxxxxxxxx 3 months ago 230MB
langgenius/dify-api 0.6.12 xxxxxxxxxxxx 3 months ago 2.48GB
traefik latest xxxxxxxxxxxx 3 months ago 172MB
nginx alpine xxxxxxxxxxxx 3 months ago 43.2MB
langgenius/dify-web 0.6.11 xxxxxxxxxxxx 3 months ago 231MB
langgenius/dify-api 0.6.11 xxxxxxxxxxxx 3 months ago 2.62GB
n8nio/n8n latest xxxxxxxxxxxx 3 months ago 593MB
certbot/certbot latest xxxxxxxxxxxx 4 months ago 117MB
langgenius/dify-web 0.6.10 xxxxxxxxxxxx 4 months ago 231MB
langgenius/dify-api 0.6.10 xxxxxxxxxxxx 4 months ago 2.59GB
app-web latest xxxxxxxxxxxx 4 months ago 6.66GB
langgenius/dify-sandbox 0.2.1 xxxxxxxxxxxx 4 months ago 409MB
langgenius/dify-api 0.6.9 xxxxxxxxxxxx 4 months ago 1.91GB
langgenius/dify-web 0.6.9 xxxxxxxxxxxx 4 months ago 231MB
redis alpine xxxxxxxxxxxx 4 months ago 40.7MB
langgenius/dify-sandbox 0.2.0 xxxxxxxxxxxx 4 months ago 409MB
postgres 15-alpine xxxxxxxxxxxx 4 months ago 246MB
langgenius/dify-web latest xxxxxxxxxxxx 4 months ago 229MB
langgenius/dify-api latest xxxxxxxxxxxx 4 months ago 1.83GB
nginx latest xxxxxxxxxxxx 5 months ago 188MB
~<略>~
タグ無しで 6.4G のものがたくさんあったので、大分容量減るのかな?と思いましたが、ディスクの空き容量が 2.9G -> 3.1Gになった程度。
ここでいったん起動してみましたが事象変わらず。
その他の未使用Dockerリソース削除
見る限りコンテナとボリュームは大して容量を使ってないので、気休めにしかならなそうですが、同様に未使用分の削除
実施前:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 52 13 45.62GB 40.27GB (88%)
Containers 14 12 86.79MB 853.6kB (0%)
Local Volumes 408 3 2.538MB 1.871MB (73%)
Build Cache 60 0 33.89GB 33.89GB
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
9f7c25611f79cddbc791ce18bbf9850fe754db6ea6f407e3c8d7d8fae8d2a08b
d8fef2de753765f913d28c5330e71d05278bf604f4aba03149e6c461df5cfecd
Total reclaimed space: 853.6kB
$ docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
~<略>~
Total reclaimed space: 1.874MB
$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
$
やはり対してかわらず。。。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 52 11 45.62GB 40.55GB (88%)
Containers 12 12 85.93MB 0B (0%)
Local Volumes 3 1 664.5kB 0B (0%)
Build Cache 60 0 33.89GB 33.89GB
この時点でも起動できなかったので、「/」にマウントしている 「/home」配下(Difyをインストールしている場所)のごみファイルを1つずつ消して、3.7Gまで増やし。。
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 391M 2.1M 389M 1% /run
efivarfs 256K 89K 163K 36% /sys/firmware/efi/efivars
/dev/vda1 96G 93G 3.7G 97% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 881M 112M 707M 14% /boot
/dev/vda15 105M 6.1M 99M 6% /boot/efi
tmpfs 391M 16K 391M 1% /run/user/0
$
無事 v0.9.1 が起動できました。
Catchの削除
ただ、起動後に再度確認すると、「/dev/vda1」がなんとUsed 100%!
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 53 11 48.3GB 43.23GB (89%)
Containers 12 12 85.93MB 0B (0%)
Local Volumes 5 1 668kB 3.557kB (0%)
Build Cache 60 0 33.89GB 33.89GB
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 391M 2.1M 389M 1% /run
efivarfs 256K 89K 163K 36% /sys/firmware/efi/efivars
/dev/vda1 96G 95G 957M 100% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 881M 112M 707M 14% /boot
/dev/vda15 105M 6.1M 99M 6% /boot/efi
tmpfs 391M 16K 391M 1% /run/user/0
この状態でとりあえずは再起動も出来るが、このままではまずい。。
ここで「build cache」の削除もあることに気づく。
消しても問題なさそうなので、試しにやってみる。
$ docker builder prune
WARNING! This will remove all dangling build cache. Are you sure you want to continue? [y/N] y
ID RECLAIMABLE SIZE LAST ACCESSED
whszw93znu06lxyyd6fhtzzx1* true 435.1MB 3 hours ago
06gmid40b54kncivoesloi0q8* true 1.546MB 3 months ago
hwu0fth5q97fuw6x72zn1b9ed* true 986MB 3 months ago
x7mi8284ivl0oplj3zetprqro true 7.189kB 4 months ago
6o4rr2z8z7sdjputdwmwwsmfm true 6.306GB 4 months ago
5alv4gbsimh2f2zfv4hi66xwk* true 0B 2 months ago
f1kct7edb97e0zo5vrbt9ljcd true 6.306GB 4 months ago
q2469s6o4zt1fioxw9a02aryy* true 6.404kB 2 months ago
m0veua6ii6jsvo9unp4ov4w9k true 6.306GB 4 months ago
u91hjk17ct4pk5kv61gaxyg7e true 6.306GB 4 months ago
3hviiyyv1q9q2dcr67k1x559y true 36.54MB 20 seconds ago
u9og0wy8usl58uarygq3zvtem true 6.166GB 21 seconds ago
kpcabrfly4qp0iwewcavk6wq2 true 7.285kB 17 seconds ago
wtch2266x7ipxzqhengm9x4nm* true 149B 2 months ago
ki2x16f1ck2gaw18hynhzpjac true 8.019kB 8 seconds ago
ovyneshkoelmwwr23f4l81grv true 7.305kB 12 seconds ago
toswj5y5hue8p6iy4te2gg66e true 7.287kB 4 seconds ago
6bu8nqxcp17zo8q052sy81qzh true 75B Less than a second ago
dumdekpqe5ri4fza6f82fosue true 1.044GB 8 seconds ago
k8aqgf99q7yc2jr3rene45n51 true 0B 4 seconds ago
lukx4kuy9mlnx3c2d4w754108 true 0B Less than a second ago
w3fdprk7tbib2dhumbgtiaeli true 0B Less than a second ago
pf8qh1cy4z8s6h59zmq8w5vtg true 0B Less than a second ago
otal: 33.89GB
おおっ!95G -> 63G(Used 100% -> 66%)に一気に減った!
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 53 16 48.3GB 39.69GB (82%)
Containers 21 21 304.7MB 0B (0%)
Local Volumes 9 3 674kB 6.555kB (0%)
Build Cache 37 0 0B 0B
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 391M 2.9M 389M 1% /run
efivarfs 256K 89K 163K 36% /sys/firmware/efi/efivars
/dev/vda1 96G 63G 34G 66% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda16 881M 112M 707M 14% /boot
/dev/vda15 105M 6.1M 99M 6% /boot/efi
tmpfs 391M 16K 391M 1% /run/user/0
問題なく再起動も出来て、再起動後の容量も変わりませんでした。
結論
同エラーがでたときは慌てず Docker の Build catch を確認してみましょう。