IT

[Linux]一覧表示した結果から、ループで順次実行するコマンドを1行で書いてみる

プロフィール画像

まる

5歳の長男と楽しく暮らすシングルファーザーです。 父親目線での育児、家事について発信していきます。ひとり親家庭や父親に寄り添った情報を増やしたい、という思いで活動を始めました。 趣味はスポーツ観戦と晩酌。成長した息子とビール片手にスポーツ観戦することが、小さな夢です。

Linuxコマンドの小技の紹介です。
今回はDockerコマンドを使っていますが、Linux全般の操作で活用できると思います。

Dockerを勉強でいじっていたのですが、不要になったDocker Imageが増えてしまい、削除がめんどくさいなあとなりました。

なんとか楽にできる方法を模索してみたので、まとめておきます。

従来の自分のやりかた

まず、以下のコマンドで一覧を取得してー、、

docker ps -a

1行ずつコンテナIDを指定して、以下のコマンドを実行していく感じ、、

docker rm [コンテナID]

消したいイメージ数分実行しないといけないので、とても大変です。

なんとか捻り出したやりかた

シェルでループにしてー、って書けばできそうだけど、それもめんどくさい。

なんとかコマンド一発でやりたいと思い、以下のコマンドを書きました。

docker ps -a |awk '{print $1}'| while read LINE; do docker rm $LINE; done

docker ps -aで一覧を取得します。
その一覧に対して、awkを使って、コンテナIDのみ取得します。
そうするとコンテナIDの一覧となるので、whileで順次コンテナIDを指定して、docker rmで削除していく、という方法です。

削除対象の条件を追加したいなどの要望が出てきたら、grepなんかを使えば実現できそうな気がしてきています。

ひとまず、コマンド一発で不要なdocker imageをまとめて削除できました。

  • この記事を書いた人
プロフィール画像

まる

5歳の長男と楽しく暮らすシングルファーザーです。 父親目線での育児、家事について発信していきます。ひとり親家庭や父親に寄り添った情報を増やしたい、という思いで活動を始めました。 趣味はスポーツ観戦と晩酌。成長した息子とビール片手にスポーツ観戦することが、小さな夢です。

HOT

-IT