(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Dockerのコンテナを一括削除

(ヽ'ω`) < あわわわわわ

検証とかでDockerを使い出し、デプロイが簡単だからとポンポン作っていたら、# docker ps -aの出力がえらいことに。

いちいちコンテナIDを指定してdocker rmをするのも一苦労なので、コンテナを一括削除してくれるスクリプトを。

(ヽ'ω`) < 力技スクリプト

#!/bin/bash
docker stop `docker ps -a | grep $1 | cut -d" " -f1`
docker rm `docker ps -a | grep $1 | cut -d" " -f1`

適当な名前(docker-rm-all)をつけて、/usr/local/bin/にでも配置。

引数に何らかの文字列を渡して、それがマッチした行のコンテナIDのものをstopしてrmする。
引数のところをもうちょっと綺麗に作りなおしたいので、そのうち手を入れる。

(ヽ´ω`) < …

Dockerのドキュメントみてたら、docker runの時に--rm=tureオプションか--rmフラグをつければForegroundモードなら、コンテナの実行が終了されたら自動的に削除されるらしい。

## --rmフラグなし
[root@localhost ~]# docker run -i -t centos:centos6 /bin/bash
bash-4.1# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
4cb7661cf5de        centos:centos6      /bin/bash           4 seconds ago       Exited (0) 2 seconds ago                       happy_goodall3

## --rmフラグあり
[root@localhost ~]# docker run -i -t --rm centos:centos6 /bin/bash
bash-4.1# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]#