Docker 이미지 필터를 사용하는 방법


84

난 쓸수있다

docker images --filter "dangling=true"

다른 어떤 필터를 사용할 수 있습니까?

이런 식으로 사용할 수 있습니까?

docker images --filter "running=false"

답변:


89

Docker v1.13.0은 다음 조건을 지원합니다.

  -f, --filter value    Filter output based on conditions provided (default [])
                        - dangling=(true|false)
                        - label=<key> or label=<key>=<value>
                        - before=(<image-name>[:tag]|<image-id>|<image@digest>)
                        - since=(<image-name>[:tag]|<image-id>|<image@digest>)
                        - reference=(pattern of an image reference)

또는 grep일부 값으로 이미지를 필터링 하는 데 사용 합니다.

$ docker images | grep somevalue

참고 문헌


5
답변을 업데이트하세요. 현재 2017 년 2 월 현재 몇 가지 매개 변수를 더 지원합니다.
Greg Dubicki

5
그것은 완벽하지만, 위의 같은 일을 할 수 사용하지 않는 docker images -f "reference=*/*/*latest"- 이것은 당신에게 같은 것을 얻을 것입니다 k8s:30000/github/someImage:latest. 또는 docker images -f "reference=*/*latest"당신을 얻을 것 k8s:30000/someImage:latest입니다. 정리하고 싶다면docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Mark_Eng

리포지토리 이름으로 특정 이미지를 제외하려면 어떻게해야합니까?
가변

40

REPOSITORY인수를 사용 docker images하여 이미지를 필터링 할 수도 있습니다 .

예를 들어 이미지가 있다고 가정합니다.

$ docker images
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
local-foo            latest       17864104b328     2 months ago    100 MB
example.com/bar      latest       b94c37de2801     9 months ago    285 MB
example.com/baz      latest       a004e3ac682c     2 years ago     221 MB

주어진 이름을 가진 모든 이미지를 명시 적으로 필터링 할 수 있습니다.

$ docker images example.com/bar
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
example.com/bar      latest       b94c37de2801     9 months ago    285 MB

Docker는 globbing도 지원합니다.

$ docker images "example.com/*"
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
example.com/bar      latest       b94c37de2801     9 months ago    285 MB
example.com/baz      latest       a004e3ac682c     2 years ago     221 MB

여기에 공식 문서가 있습니다 .


3
메모 *에는 적용되지 않습니다 와일드 카드 문자 /저장소 이름을. 따라서 마지막 예에서 태그가 latest있는 모든 이미지를 나열 하려면 명령 docker images --filter=reference='*:latest'이 잘못되었습니다. 올바른 명령은 docker images --filter=reference='*/*:latest'입니다.
Tomáš Záluský

이 모든 시간에 내가 찾고 있었던 --filter name=something-그리고 계속해서 간단한 해결책은 (명시 적) 필터가 전혀 필요하지 않다는 것입니다!
tripleee

2
사람들은 여전히 당황 당신은 이미지를 찾고 있다면 ... openapitools/openapi-generator-cli다음 docker images open*그것을 찾을 수 없습니다. 그러나 docker images open*/*그것을 찾을 것입니다.
Ryan Lundy

12

Docker v1.7에서 :

현재 지원되는 필터는 다음과 같습니다.

  • 매달 기 (부울- true또는 false)
  • 레이블 ( label=<key>또는 label=<key>=<value>)

1
Docker v1.12 before=<image-name>[:tag]|<image-id>|<image@digest>since=(<image-name>[:tag]|<image-id>|<image@digest>)
부터는

6

나를 위해

docker images -q | while read IMAGE_ID; do
    docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done

트릭을했다. date 명령은 다음을 통해 동일한 형식으로 출력을 생성 할 수 있습니다.

date -Ins --date='10 weeks ago'

타임 스탬프를 비교할 수 있습니다. 그래도 편의를 위해 매달린 이미지에 필터를 사용합니다.


3

sudo 도커 이미지 --filter "running = false"

중지 된 오래된 컨테이너를 청소하려면 다음을 사용할 수 있습니다.
docker container prune

태그가없는 이미지를 제거하려면 다음을 사용할 수 있습니다.
docker image prune


0

버전 17.09 ++에서 작동하는 또 다른 예가 있습니다.

sudo docker rmi $(sudo docker images -f=reference="registry.gitlab.com/example-app" -f "dangling=true" -q)

설명:

  • reference -저장소 이름으로 이미지를 참조하고 있습니다.
  • dangling=true -태그가없는 이미지를 제거합니다.
  • -q -전체 라인이 아니라 이미지의 숫자 ID 만 표시하는 조용함을 의미합니다.

이 명령은 저장소 이름이 "registry.gitlab.com/example-app"이고 태그가 지정되지 않은 ( <none>태그 열에 있음) 모든 이미지를 제거합니다.

참조 링크 : https://docs.docker.com/engine/reference/commandline/images/#filtering


-1

FYI, 필터는 없지만 테스트 또는 학습으로 사용할 때 모든 이미지를 삭제하려면

도커 이미지 rm -f $ (도커 이미지 ls)

인사말.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.