Docker で、Error load build context no space left on device というエラーの解決方法

2023/08/26に公開

こんにちは、AIQ株式会社のフロントエンドエンジニアのまさぴょんです!

今回は、Docker で、Error load build context failed to solve: failed to create xxxxxxx: open /var/lib/docker/xxxxxxx : no space left on device
というエラーの解決方法について、解説していきます。

Errorの発生状況

いつものように開発Projectをdocker compose up --buildで、ビルドした際に、
Error load build context failed to solve: failed to create xxxxxxx: open /var/lib/docker/xxxxxxx : no space left on device
というエラーが発生しました。。。

原因: Dockerが、メモリを使いすぎている

先述の、Error load build context failed to solve: failed to create xxxxxxx: open /var/lib/docker/xxxxxxx : no space left on device
というエラーの原因は、Dockerが、メモリを使いすぎていることにあります。

no space left on device (デバイスにスペースが残っていない)って、言っていますね。

試しに、docker system dfコマンドを使用してみてください。

docker system df

実行すると次のように、Dockerのストレージ使用状況が、表示されるはずです。

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          44        20        30.54GB   21.75GB (71%)
Containers      24        4         16.22MB   16.22MB (99%)
Local Volumes   29        7         2.811GB   1.527GB (54%)
Build Cache     252       0         13.57GB   13.57GB

ImagesのSIZEが30.54GBや、Build Cacheが13.57GBなど結構な使用率であることがわかります。

解決方法: 不要なDockerのImageやContainer,Cacheなどを削除する

Dockerが、メモリを使いすぎていることが、今回のエラーの原因なので、不要な Docker Image や Container, Build Cache などを削除して解決していきます。

私は以前に、Dockerを軽量化するために使えるdocker prune コマンドなどを紹介する記事を書いているので、ここから一部、引用していきます。

https://masanyon.com/docker-prune-command-cli-system-container-image/

不要なDockerイメージの自動削除

docker image pruneコマンドを使用することで、使用していないDocker Imageを自動で、一括で削除することができます。

停止しているコンテナはメモリやリソースを占有するため、定期的に削除するクセを持っておいた方がいいです。

タグを持たず、他のコンテナからも参照されないイメージが、使用していないイメージとして判断されます。

docker image prune

不要なDockerコンテナの自動削除

docker container prune コマンドを使用することで、停止しているDocker Containerを一括で削除することができます。

docker container prune

Docker build cacheの削除

次のコマンドで、Docker での Build時に使用している Cacheを Clearすることができます。

docker builder prune

不要なDocker Image, Container, Volume, Network の一括削除

docker system prune コマンドを使用することで、使用されていないDocker Image, Container, Networkなどを一括で削除することができます。

docker system prune

デフォルトでは、Volume は削除されないようなので、VolumeもClearしたい場合は、オプションを付与する必要があります。

docker system prune --volumes

[参考・引用]

  • 私は以前に、個人Blogの方で、書いた記事です🐱
  • 上記では、紹介していない、docker volume pruneコマンドや、docker network prune コマンドについても紹介しています。

https://masanyon.com/docker-prune-command-cli-system-container-image/

注意事項

この記事は、AIQ 株式会社の社員による個人の見解であり、所属する組織の公式見解ではありません。

求む、冒険者!

AIQ株式会社では、一緒に働いてくれるエンジニアを絶賛、募集しております🐱🐹✨

エンジニア視点での我が社のおすすめポイント

  1. フルリモート・フルフレックスの働きやすい環境!
    • 前の会社でアサインしてた現場は、フル出社だったので、ありがたすぎる。。。
    • もうフル出社には、戻れなくなります!
  2. 経験豊富なエンジニアの先輩方
    • 私は、3年目の駆け出しエンジニアなので、これが、かなりありがたいです!
  3. 自社開発とR&D(受託開発)を両方している会社なので、経験できる技術が多い。
    • 自社のProduct開発と、他社からの受託案件で、いろいろな技術を学ぶことができます。
  4. AI関連の最新の技術に触れられるチャンスが多い。
    • 自社で特許を持つほど、AI技術に強い会社で、プロファイリングを得意とした技術体系があります。
    • ChatGPTを自社アプリに搭載など、AIトレンドも、もちろん追っており、最新の技術に触れられるチャンスが多いです。
  5. たまに、札幌ラボ(東京から札幌) or 東京オフィス(札幌から東京)に出張で行ける!
    • 東京と、札幌に2拠点ある会社なので、会合などで集まる際に、出張で行けます。

採用技術 (一部抜粋)

  • FrontEnd: TypeScript, JavaScript, React.js, Vue.js, Next.js, Nuxt.js など
  • BackEnd: Node.js, Express,Python など
  • その他技術: Docker, AWS, Git, GitHub など

エントリー方法

  1. 私達と東京か札幌で一緒に働ける仲間を募集しています。
    詳しくは、Wantedly (https://www.wantedly.com/companies/aiqlab)を見てみてください。

Webエンジニア向け説明

https://www.wantedly.com/projects/1089410

データサイエンティスト向け説明

https://www.wantedly.com/projects/1089406

人事に直通(?)・ご紹介Plan(リファラル採用)

私経由で、ご紹介もできますので、興味のある方や気軽にどんな会社なのか知りたい方は、X(旧:Twitter)にて、DMを送ってくれても大丈夫です。
https://twitter.com/masanyon1212

AIQ Tech Blog (有志)

Discussion