LoginSignup
1
0

More than 5 years have passed since last update.

古いDocker imageを柔軟に消す

Last updated at Posted at 2019-03-03

docker image lsコマンドで表示されるCreatedSinceは、2 weeks agoとかざっくりした表現になっている。

$ docker image ls --format '{{.ID}}\t{{.CreatedSince}}' eiryu/q-text-as-data
67e7356ad630    41 hours ago
2fbfdfb6e5d8    43 hours ago

作られた日から15日経過したものを消すなど、もっと細かい指定がしたい場合はCreatedAtをparseして時刻判定をすれば良い。

ちなみにJavaだとyyyy-MM-dd HH:mm:ss Z zでparse出来る形式で出力される。

$ docker image ls --format '{{.CreatedAt}}' eiryu/q-text-as-data
2019-03-02 03:01:10 +0900 JST
2019-03-02 00:24:42 +0900 JST

結果は以下。minusHoursの部分はminusDays等での調整も可。詳細はjava.time.LocalDateTimeのJavadocを参照。

$ docker image ls --format '{{.ID}}\t{{.CreatedAt}}' eiryu/q-text-as-data | groovy -npe "def createdAt = line.split('\t')[1]; def parsed = java.time.format.DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss Z z').parse(createdAt); def time = java.time.LocalDateTime.from(parsed); if (time.isBefore(java.time.LocalDateTime.now().minusHours(42))) line"
2fbfdfb6e5d8    2019-03-02 00:24:42 +0900 JST

あとはawkなりxargsでIMAGE IDをdocker image rmに渡せば良い。

DockerのGroovyで動かしても良いし便利。

$ docker image ls --format '{{.ID}}\t{{.CreatedAt}}' eiryu/q-text-as-data | docker container run --rm -i groovy:2.5.0-jdk8 groovy -npe "..."

環境

$ docker -v
Docker version 18.09.2, build 6247962

$ groovy -v
Groovy Version: 2.5.0 JVM: 1.8.0_181 Vendor: Azul Systems, Inc. OS: Mac OS X
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0