docker でよく使うけど覚えられないやつ

docker 周りで頻繁には使わないかもしれないが、

それゆえに覚えてなくて毎回調べるやつ

コンテナの残骸を消したい

1時間以内に作ったコンテナ全部消す

直近間違えて作ったゴミ(container)を消す方法

注) "minute" でgrepしてるので、imageとかtagの名前にminute が入っていたらバグる

docker ps -a | grep Exited  | grep minute | awk '{print $1}' | xargs docker rm 

docker の filter オプションを活用すると多分こんな感じ

docker ps -a --filter "status=exited" | grep minute | awk '{print $1}' | xargs docker rm 

since オプションもあるが、これはImage IDを受け取るのでちょっとめんどい。正確にやりたければめんどさを考えてもImage ID 指定の方が良い。

ある時点より昔に作ったコンテナを全て消す

まずはどんなコンテナがあるかを確認する

docker ps -a --filter "status=exited" --format 'table {{.Image}}\t{{.CreatedAt}}\t{{.Status}}'
docker container prune --filter "until=2022-10-07T09:10:00"

ある時点以前に作られたコンテナを消す(Exitした時刻ではなく、コンテナの作られた時刻)

docker image の出力が横に長い

ID は文字数一定だけどその他はまちまちなので整形する余地はあるが、事足りてる

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"