docker container prune
docker container prune
docker container prune은 정지된 컨테이너를 모두 제거하는 명령이에요. 더 이상 쓰지 않는 정지된 컨테이너들을 한 번에 정리하고 싶을 때 써요.
출처: 문서
본문
정지된 컨테이너를 모두 제거해요.
사용법 (Usage)
docker container prune [OPTIONS]
옵션 (Options)
| 옵션 | 기본값 | 설명 |
|---|---|---|
--filter |
필터 값을 제공해요 (예: until=<timestamp>) |
|
-f, --force |
확인을 묻지 않아요 |
예제 (Examples)
컨테이너 정리하기
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
4a7f7eebae0f63178aff7eb0aa39cd3f0627a203ab2df258c1a00b456cf20063
f98f9c2aa1eaf727e4ec9c0283bc7d4aa4762fbdba7f26191f26c97f64090360
Total reclaimed space: 212 B
필터링하기 (--filter)
필터링 플래그(--filter) 형식은 "key=value"예요. 필터가 여러 개면 여러 플래그를 넘겨요(예: --filter "foo=bar" --filter "bif=baz"). 여러 필터가 제공되면 다음과 같이 결합돼요.
- 키가 다른 여러 필터는 AND 논리로 결합돼요. 컨테이너는 모든 필터 조건을 만족해야 정리돼요.
- 키가 같은 여러 필터는 OR 논리로 결합돼요. 컨테이너는 해당 키의 값 중 하나라도 매칭되면 정리돼요.
예를 들어 --filter "label=foo" --filter "until=24h"는 foo 라벨이 있고 24시간 전에 생성된 컨테이너를 정리해요. 반대로 --filter "label=foo" --filter "label=bar"는 foo 또는 bar 라벨이 있는 컨테이너를 정리해요.
현재 지원되는 필터는 다음과 같아요.
until(<timestamp>) — 주어진 타임스탬프 이전에 생성된 컨테이너만 제거해요label(label=<key>,label=<key>=<value>,label!=<key>, 또는label!=<key>=<value>) — 지정한 라벨이 있는(또는label!=...의 경우 없는) 컨테이너만 제거해요
until 필터는 Unix 타임스탬프, 날짜 형식의 타임스탬프, 또는 ParseDuration이 지원하는 Go duration 문자열(예: 10m, 1h30m)일 수 있으며, 데몬 머신의 시간을 기준으로 계산돼요. 날짜 형식 타임스탬프의 지원 형식은 RFC3339Nano, RFC3339, 2006-01-02T15:04:05, 2006-01-02T15:04:05.999999999, 2006-01-02T07:00, 2006-01-02예요. 타임스탬프 끝에 Z 또는 +-00:00 타임존 오프셋을 제공하지 않으면 데몬의 로컬 타임존이 사용돼요. Unix 타임스탬프를 제공할 때는 seconds[.nanoseconds] 형식인데, seconds는 1970년 1월 1일(UTC/GMT 자정, 윤초 제외, 즉 Unix epoch 또는 Unix time) 이후 경과한 초 수이고, 선택적 .nanoseconds 필드는 9자리 이하의 초의 분수예요.
label 필터는 두 가지 형식을 받아요. 하나는 label=...(label=<key> 또는 label=<key>=<value>)으로 지정한 라벨이 있는 컨테이너를 제거하고, 다른 하나는 label!=...(label!=<key> 또는 label!=<key>=<value>)으로 지정한 라벨이 없는 컨테이너를 제거해요.
다음은 5분 전에 생성된 컨테이너를 제거해요.
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID IMAGE COMMAND CREATED AT STATUS
61b9efa71024 busybox "sh" 2017-01-04 13:23:33 -0800 PST Exited (0) 41 seconds ago
53a9bc23a516 busybox "sh" 2017-01-04 13:11:59 -0800 PST Exited (0) 12 minutes ago
$ docker container prune --force --filter "until=5m"
Deleted Containers:
53a9bc23a5168b6caa2bfbefddf1b30f93c7ad57f3dec271fd32707497cb9369
Total reclaimed space: 25 B
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID IMAGE COMMAND CREATED AT STATUS
61b9efa71024 busybox "sh" 2017-01-04 13:23:33 -0800 PST Exited (0) 44 seconds ago
다음은 2017-01-04T13:10:00 이전에 생성된 컨테이너를 제거해요.
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID IMAGE COMMAND CREATED AT STATUS
53a9bc23a516 busybox "sh" 2017-01-04 13:11:59 -0800 PST Exited (0) 7 minutes ago
4a75091a6d61 busybox "sh" 2017-01-04 13:09:53 -0800 PST Exited (0) 9 minutes ago
$ docker container prune --force --filter "until=2017-01-04T13:10:00"
Deleted Containers:
4a75091a6d618526fcd8b33ccd6e5928ca2a64415466f768a6180004b0c72c6c
Total reclaimed space: 27 B
$ docker ps -a --format 'table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}'
CONTAINER ID IMAGE COMMAND CREATED AT STATUS
53a9bc23a516 busybox "sh" 2017-01-04 13:11:59 -0800 PST Exited (0) 9 minutes ago