dockerでの開発中に、docker runしてエラーが発生し、exitedになっているコンテナが残った状態になる場合があります。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0efc271c4b9e testapp "python identidock.py" 6 seconds ago Exited (1) 4 seconds ago gifted_nobel cf94c6f94ae3 testapp "bin/bash" 10 seconds ago Created stoic_murdock 65ebe4051e20 testapp "bin/bash" 5 minutes ago Created 0.0.0.0:5000->5000/tcp infallible_ritchie
コンテナ名やIDを指定して下記のように1つずつコンテナを削除するのもできます
$ docker rm ${CONTAINER_NAME} $ docker rm ${CONTAINER_ID}
これでは複数exitedになっている場合大変なので、docker rmの引数に、exitedなコンテナのIDをまとめて渡すようにします。
exitedなコンテナのIDのみ取得する
まず、docker ps -aを実行したときに表示されるコンテナの一覧から、 statusがexitedなもののコンテナIDのみ出力させるようにします。 –filterで条件を指定することでコレが可能になります。
status exitedなコンテナのIDのみ表示させる $ docker ps -a --filter 'status=exited' -q 0efc271c4b9e cf94c6f94ae3 65ebe4051e20
これをdocker psの引数として渡すことで、exitedなコンテナをまとめて削除できます。
# exitedなコンテナをまとめて削除する $ docker rm $(docker ps -a --filter 'status=exited' -q)