LainyZine: 프로그래머 가이드 🐣

Docker 팁: 로컬 시스템의 모든 컨테이너와 이미지 삭제하기

Docker를 사용하다 보면 수많은 컨테이너와 이미지들이 로컬에 쌓여가게 됩니다. 상황에 맞게 필요없는 컨테이너와 이미지를 정리할 수도 있지만, 필요에 따라서 컨테이너와 이미지를 모두 삭제하고 싶을 수도 있습니다. 이 글에서는 로컬 시스템 상의 Docker 컨테이너와 이미지를 전체 삭제하는 방법을 소개합니다.

한 번 삭제된 컨테이너와 이미지는 복구가 어려우니 작업에는 신중을 기하시기 바랍니다.

시스템 상의 모든 Docker 컨테이너 삭제하기

시스템 상의 모든 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 rm 명령어 사용법과 셸 $() 기법에 대해선는 아래 글에서 더 자세히 다룹니다.

시스템 상의 모든 Docker 이미지 삭제하기

시스템 상의 모든 이미지를 삭제하는 명령어도 컨테이너를 삭제하는 명령어와 비슷합니다. 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 이미지를 삭제하는 docker rmi 서브 커맨드에 대해서는 다음 글에서 자세히 소개합니다.

Docker Desktop의 초기화 기능 사용하기

Windows와 macOS의 Docker Desktop에는 데이터 삭제 기능이 포함되어있습니다. Docker Desktop을 열고 오른쪽 위 벌레 모양의 Troubleshoot 아이콘을 클릭하면 다음과 같은 화면이 나옵니다(Windows, macOS 공통).

Docker Desktop의 Troubleshoot 메뉴

아래 메뉴를 선택해 컨테이너와 이미지 데이터를 일괄 삭제할 수 있습니다.

prune으로 사용하지 않는 오브젝트만 삭제하기

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

prune 명령어에 대해서는 다음 글에서 더 자세히 소개합니다.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.