2017年4月27日木曜日

PowerShell上で、Dockerのnoneになったイメージを一括で削除するワンライナー

PowerShell上で、Dockerのnoneになったイメージを一括で削除するワンライナー

Dockerで<none>なイメージを一括で削除するワンライナーのPowerShell版です。

参考

docker images --format "{{.Repository}}@{{.ID}}" | ?{ $_ -match "<none>@" } | %{ docker rmi $_.split("@")[1] --force}

↓以下ワンライナーの中身の解説

docker images

docker images --format "{{.Repository}}@{{.ID}}"

これで
"レポジトリ名@イメージID"
のフォーマットで、イメージの一覧を取得できます。
セパレータとして@を使っています。

?{ $_ -match "判定条件"}

?{ $_ -match "<none>@" }

docker imagesの結果を一行ずつ検証して、
<none>@を含む行だけ次のコマンドに渡しています。

%{ docker rmi イメージID --force}

%{ docker rmi $_.split("@")[1] --force}

docker rmi イメージID --force
で、指定イメージIDに紐づくイメージを削除します。
--forceで強制的に消します。

削除対象の各行は
"レポジトリ名@イメージID"
というフォーマットになっているので、
イメージIDだけを取り出します。
それが下記部分です。

$_.split("@")[1]

splitにセパレータ文字を指定して、
2要素目(配列のインデックスでいう1)だけを
取得しています。




以上です。


0 件のコメント: