エラー内容
コンテナをビルドしようとすると、以下のようなエラーが出力された。
ERROR: Error processing tar file(exit status 1): write /db/mysql_data/mysql.ibd: no space left on device
以下のコマンドでディスクの空き領域を調べてみるとどうやらdockerのコンテナやイメージがディスクを占有し、空き領域が無くなってきているようだ。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 18 1 4.594GB 4.592GB (99%)
Containers 1 0 178.8MB 178.8MB (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
対処法
docker system pruneを実行すると、実行していないコンテナやイメージを一括して削除することができる。
$ docker system prune
以下の警告が出るので y と入力。
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
ちなみにpruneは「プルーン」と発音し、食べ物のプルーン(干したプラム)という名詞としての意味もあるが、ここでの意味は「余分なものを取り除く」という動詞としての意味。また、食べ物のプルーンという意味と動詞としての意味は、語源が別のようだ。
参考:カリフォルニアプルーン協会「プルーンQ&A」 https://www.prune.jp/about/qa
そんなことを考えながら再度、ディスクの空き領域を確認すると、スッキリした感じになっていることがわかる。
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 5 0 2.433GB 2.433GB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
これでコンテナをビルドすると、問題なくビルドされた。