Docker:【タグ名なし】イメージまとめて削除


はじめに

背景

  • イメージの削除は少し面倒
    • 簡単にまとめて削除できるコマンドがあれば便利
  • 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列)のみを抽出
        ※列のタイトルを含まず、データのみ
  • 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>のデータはない
  • タグのないイメージのみまとめて削除できた

リファレンス


Posted by futa