docker system prune

docker system prune

docker system prune은 사용하지 않는 데이터를 제거하는 명령이에요. 멈춘 컨테이너, 사용하지 않는 네트워크·이미지·빌드 캐시, 선택적으로 볼륨까지 정리해서 공간을 확보할 때 사용해요.

출처: 문서

본문

docker system prune은 사용하지 않는 모든 컨테이너, 네트워크, 이미지(댕글링과 미사용 모두), 미사용 빌드 캐시, 그리고 선택적으로 볼륨을 제거해요.

빌드 캐시는 이 명령으로 항상 정리 대상이 돼요 (RUN --mount=type=cache로 만든 BuildKit 캐시 마운트 포함). 컨테이너·네트워크·이미지를 제거하지 않고 빌드 캐시만 되찾으려면 docker builder prune을 사용해요.

docker system prune [OPTIONS]

지원하는 옵션은 다음과 같아요.

옵션 기본값 설명
-a, --all 댕글링뿐 아니라 사용하지 않는 모든 이미지를 제거해요.
--filter API 1.28+ 필터 값을 제공해요 (예: label==).
-f, --force 확인을 묻지 않아요.
--volumes 익명 볼륨도 정리해요.

예시

$ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - unused build cache
Are you sure you want to continue? [y/N] y

Deleted Containers:
f44f9b81948b3919590d5f79a680d8378f1139b41952e219830a33027c80c867
792776e68ac9d75bce4092bc1b5cc17b779bc926ab04f4185aec9bf1c0d4641f
...

Total reclaimed space: 1.84kB

기본적으로 현재 컨테이너가 사용하지 않는 볼륨의 중요 데이터가 삭제되지 않도록 볼륨은 제거하지 않아요. 익명 볼륨도 정리하려면 --volumes 플래그를 사용해요.

$ docker system prune -a --volumes

필터링 (--filter)

--filter 형식은 key=value예요. 여러 필터는 다음과 같이 결합돼요.

  • 키가 다른 여러 필터는 AND 논리로 결합돼요. 모든 조건을 만족해야 정리돼요.
  • 키가 같은 여러 필터는 OR 논리로 결합돼요. 해당 키의 값 중 하나라도 일치하면 정리돼요.

지원하는 필터는 다음과 같아요.

  • until (until=<timestamp>): 주어진 타임스탬프보다 이전에 만들어진 컨테이너·이미지·네트워크만 제거해요.
  • label (label=, label==, label!=, label!==): 지정한 라벨이 있는(또는 label!=...인 경우 없는) 컨테이너·이미지·네트워크·볼륨만 제거해요.

until 필터는 Unix 타임스탬프, 날짜 형식 타임스탬프, 또는 ParseDuration이 지원하는 Go 기간 문자열(예: 10m, 1h30m)을 받아요. 타임스탬프 끝에 Z+-00:00 시간대 오프셋을 주지 않으면 데몬 머신의 로컬 시간대를 사용해요.

더 알아보기