Amazon ECS + Docker で no space left on device エラーが出たら docker system prune –volumes

Amazon ECS + Docker で no space left on device エラーが出たときの解決方法をご紹介します。

Docker

背景 no space left on device

Amazon ECS で no space left on device エラーが発生して、新しくタスクが起動しなくなってました。

Error response from daemon: 
create ecs-hoge-123-log-9eede4c79198a0d35b00:
error while creating volume path '/var/lib/docker/volumes/ecs-hoge-123-log-9eede4c79198a0d35b00/_data':
mkdir /var/lib/docker/volumes/ecs-hoge-123-log-9eede4c79198a0d35b00: 
no space left on device

結論 Amazon ECS で no space left on device エラー

結論を書くと、未使用な docker image, volume などを一括削除する、以下のコマンドを実行するだけで完了です。

docker system prune --volumes

未使用な Docker image, container, volume, network, cache などの一括削除方法 | CodeNote

docker volume prune, docker image prune 個別実行の場合

no space left on device エラー

先に、未使用な image を削除すると以下のようなエラーが発生しました。エラーメッセージは読みやすさのため : で改行してますが、実際は 1 line です。

$ docker image prune
Error response from daemon:
container 651ea642b4718a09b204807761ea854ecfcdcfa832df729c6ce1264601d3ddb4:
driver "devicemapper" failed to remove root filesystem:
failed to remove device 7f1c7f87e921d23749e673fda554ab67931c186882d44bf74b78f2b2fc99efea:
devmapper: Error saving transaction metadata:
devmapper: Error creating metadata file:
open /var/lib/docker/devicemapper/metadata/.tmp929441300:
no space left on device

volume → image の順番で削除する

  1. 未使用な docker volume を削除する
  2. 未使用な docker image を削除する

という手順ならエラー発生すること無く、成功しました。

docker volume prune
docker volume ls -qf dangling=true
# 未使用な volume が何も出力されないことを確認する
docker image prune
docker ps -aq --filter status=exited
# 未使用な image は何も出力されないことを確認する

以上、Amazon ECS で no space left on device エラーが出たら docker system prune –volumes していきたい、現場からお送りしました。