Docker:【タグ名なし】イメージまとめて削除
はじめに
背景
- イメージの削除は少し面倒
- 簡単にまとめて削除できるコマンドがあれば便利
- Dockerコマンドを組み合わせた
- 条件を変えると応用もできそう
前提
- shellコマンドの理解
- 「`」(バックスラッシュ)実行
- リスト
- Dockerの基本コマンド
作成したコマンド
files=`sudo docker images -f "dangling=true" -q`
sudo docker rmi $files
- 概要
- タグ名のないリストを取得
- イメージ削除コマンドにリストを引き渡して実行
- ポイント
- 「dangling=true」でタグ名なしのイメージを取得
- shellコマンド「`」(バックスラッシュ)を使ってfilesにリストを格納
- 以降の実行ログに詳細説明を記載
実行ログ
準備
タグ名のないイメージだけを抽出する
sudo docker images -f "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> bc4bb1d191cf 16 minutes ago 5.59MB <none> <none> 092864290ad5 18 minutes ago 5.59MB
- REPOSITORY列、TAG列は<none>になっている
- このイメージを削除したい
- IMAGE列はそれぞれ「bc4bb1d191cf」「092864290ad5」
イメージIDを変数に格納
files=`sudo docker images -f "dangling=true" -q`
echo $files
$ files=`sudo docker images -f "dangling=true" -q` $ echo $files bc4bb1d191cf 092864290ad5
- docker images
- 今あるイメージを一覧表示する
- -f
- イメージ一覧をフィルタするオプション
- 「-f」に続けて条件を指定する
- dangling=true
- タグ付けされていないイメージを抽出する
- -q
- イメージID(IMAGE ID列)のみを抽出
※列のタイトルを含まず、データのみ
- イメージID(IMAGE ID列)のみを抽出
- files=`…`
- shellコマンド
- 「`」(バックスラッシュ)内のコマンド実行結果を変数filesに格納する
- 出力はなし
- echo $files
- 変数filesの中身を確認する
- 「bc4bb1d191cf」「092864290ad5」がリスト形式で格納されている
削除実行と確認
「files」を引数にしてdocker rmiを実行
sudo docker rmi $files
Deleted: sha256:bc4bb1d191cf83755cb1d12942fac80bbe8d87928b482c4732d60eec5e4ba0b8 Deleted: sha256:092864290ad538de4114ca730432ea50a3e0f3908328905fd5b771488d6a2c44
- docker rmi
- イメージ削除コマンド
- $files
- sudo docker rmi bc4bb1d191cf 092864290ad5と同じこと
- どちらのイメージも削除された:Deleted
一覧で削除を確認
sudo docker images -f "dangling=true"
sudo docker images
$ sudo docker images -f "dangling=true" REPOSITORY TAG IMAGE ID CREATED SIZE $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest c059bfaa849c 2 months ago 5.59MB hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB
- docker images -f “dangling=true"
- タグ名のないイメージを抽出
- ヘッダ列のみの表示(抽出されない)
- docker images
- イメージ全体抽出
- REPOSITORY列、TAG列が<none>のデータはない
- タグのないイメージのみまとめて削除できた
リファレンス
- docker images | Docker Documentation
- Dockerコマンドリファレンスのdocker imagesの「filter」
