読者です 読者をやめる 読者になる 読者になる

docker rm, rmiを楽にするためのツールを作った

docker docker engine 自作ツール

少し前に作ったツールの紹介

github.com

モチベーション

Docker Engineを使っていると不要なイメージやコンテナがどんどん出来てきて、 邪魔だし容量圧迫したりするので時々削除している。

それまでどうやっていたかと言うと

  1. docker ps -a, docker imagesで要らなそうなイメージ、コンテナを確認
  2. docker rm, rmi で削除

数が多いと削除対象のidやnameを覚えてdocker rm, rmiの引数として指定するのは結構しんどい。行を見間違えることもあるし。 もっと楽に出来ないものかと作った。 そんなツール既にあるだろとは思うが、ちょっと見つからなかったので作った。

インストール

ちゃんとしたインストール方法は用意していない。 ただのシェルスクリプトなので、PATHが通っているところにおいて実行権限与えればよい。

使い方

$ dckrm  # コンテナの削除
$ dckrmi  # イメージの削除

コマンドを実行するとコンテナ(イメージ)の一覧が出力された一時ファイルがDCKRM_EDITORで指定したエディタで開く。 削除しないコンテナ(イメージ)の行を削除ないし#でコメントアウト ファイルを保存して閉じると、本当に削除するか聞かれる。Noと答えれば何もしないし、Yesとすれば削除する。

たったこれだけ。

環境変数

  • DCKRM_EDITOR: 一時ファイルを編集するエディタを起動するコマンド(デフォルトはvi)
  • DCKRM_TEMPDIR: 一時ファイルを作成するディレクトリ(デフォルトは/tmp)

注意点

このツールは我ながら分かりにくいと思う部分がある。

  • 削除するものではなく、削除しないものに対応する行を編集する
  • ファイルを何も編集しないで閉じると、全削除しようとする -> これのために、確認を入れるようにした

仕方ないといえば仕方ないのだが、削除は取り返しがつかないかもしれないので要注意

TODO

このツールは自分で使うためにぱっと作っただけなので 全然作り込んでない。いけてない部分もあるけど、まぁいいかと放置している。

  • -f(--force)オプションのサポート
  • イメージ(コンテナ)の削除に失敗したときに一時ファイルも削除する(例外処理)
  • docker ps, imagesの --filterオプ本のサポート(一時ファイルに出力するイメージ(コンテナ)のフィルタリング) エディタの機能でフィルタリングも出来るとは思うけど、
  • 確認時に、削除するものと削除しないものの一覧を出力

ライセンス

MIT