Stop / remove all Docker containers | 모든 컨테이너 종료/삭제하기

모든 컨테이너를 지우는 한 줄짜리 커맨드입니다.

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

 

주석:

너무 간단한 내용이라 조금 보충합니다. docker ps 커맨드에서 -a 옵션은 현재 실행 중이지 않은 컨테이너를 포함하여 모든 컨테이너의 정보를 출력하고, -q를 옵션은 ps 커맨드로 나오는 여러 정보들 중 컨테이너 ID만 출력합니다. 따라서 아래 커맨드는 현재 실행 중인 컨테이너만 모두 종료합니다. 그런데 rm은 그렇다 쳐도, stop을 할 때 이미 종료된 컨테이너를 -a 옵션으로 왜 또 종료하는지 궁금해지네요. 만약을 대비하는 걸까요?

docker stop $(docker ps -q)

한편, -q 옵션을 생략하면 ps 출력 전체 (CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES) 가 docker stop/rm의 인자로 들어가기 때문에 에러가 뜹니다. docker ps는 컨테이너 ID 또는 이름을 인자로 받으니까요.

 

원문:

https://coderwall.com/p/ewk0mq/stop-remove-all-docker-containers

547 Comments