docker volume rm コマンド実行時に「volume is in use」と言われて削除できないときの対処方法

create
2021年04月14日
update
2021年04月14日

Table 1. 環境
App Version

Windows 10

Docker Desktop

3.2.2

PowerShell

7.1.2

原因🥢

エラーメッセージ通り。
その Volume を使用しているコンテナがまだ削除されずに残っていることが原因。

自分の場合は停止状態( exited )のままコンテナが残っていたせいだった。

対処方法🍣

次のコマンドを実行して、停止状態のコンテナを削除すればいい。

Example 1. 停止状態のコンテナすべてを削除したあとに volume を削除
docker container prune --force &&   (1)
  docker volume rm <volume name>
1 停止状態のコンテナすべてを削除する。

また、削除すべきコンテナを絞り込むこともできる。
下記のように --filter オプションを利用して、volume をマウントしているコンテナのみを抽出して削除する。

Example 2. 対象の volume をマウントしているコンテナだけを削除
$target = 'target-volume-name'  (1)

docker ps -a --quiet --filter "status=exited" --filter "volume=$target" |   (2)
  %{ docker container rm $_ } &&   (3)
  docker volume rm $target
1 削除したい volume の名前。
2 停止状態かつ対象の volume をマウントしているコンテナのIDを抽出。
3 抽出されたコンテナを削除。
docker container prune コマンドでは現在のところ、 volume についてフィルタリングできない(Docker Documentation)。