시스템 상의 모든 Docker 컨테이너를 삭제할 때는 다음 명령어를 사용합니다.
$ docker rm -f $(docker ps -aq)
여기서 docker ps -aq
는 Docker의 모든 컨테이너 ID를 가져오는 명령어입니다. 셸에서 $()
기법을 사용하면 명령어를 실행한 결과를 가져올 수 있습니다. 이 방법을 사용해 docker rm -f
에 현재 시스템 상의 모든 컨테이너 ID를 전달합니다.
즉, 모든 컨테이너가 삭제됩니다.
아래 명령어는 모든 컨테이너를 삭제하는 좀 더 최신 버전입니다. 실행 결과는 같습니다.
$ docker container rm -f $(docker container ls -aq)
시스템 상의 모든 이미지를 삭제하는 명령어도 컨테이너를 삭제하는 명령어와 비슷합니다. docker images -q
로 모든 이미지 ID를 가져와 docker rmi
명령어에 넘겨줍니다.
$ docker rmi $(docker images -q)
단, 이미지를 사용하는 컨테이너가 있는 경우 이미지를 삭제할 수 없습니다. 따라서 아래와 같이 모든 컨테이너를 삭제 후, 이미지를 삭제하는 것을 추천합니다. 두 명령어를 차례로 실행해주면 됩니다.
$ docker rm -f $(docker ps -aq) $ docker rmi $(docker images -q)
아래 명령어는 전체 이미지를 삭제하는 좀 더 최신 버전입니다. 동작 방식이나 실행 결과는 같습니다.
$ docker image rm -f $(docker image ls -q)
Docker에서는 중지된 컨테이너나 dangling되었거나 사용하고 있지 않은 이미지만 한 번에 삭제할 수 있는 오브젝트 타입 별 prune 기능을 제공하고 있습니다. prune을 사용하면 현재 사용하지 않는 오브젝트만 삭제하기 때문에 좀 더 빠르고 안전하게 디스크 용량을 확보할 수 있습니다.
다음 명령어는 중지된 컨테이너를 삭제합니다.
$ docker container prune
다음 명령어는 dangling 상태의 이미지를 삭제해줍니다. dangling된 이미지는 이미지 목록에서 태그가 없어 <none>으로 보이는 이미지입니다.
$ docker image prune
a
옵션을 사용하면 dangling된 이미지와 컨테이너에서 사용되고 있지 않은 이미지를 모두 삭제해줍니다.
$ docker image prune -a
system prune
을 사용하면 중지된 컨테이너, dangling된 이미지, 사용하지 않는 볼륨, 사용하지 않는 네트워크를 한꺼번에 삭제해줍니다. 사용하고 있지 않은 이미지도 함께 삭제하려면 a
옵션을 사용하면 됩니다.
$ docker system prune