Cách sử dụng bộ lọc hình ảnh docker


83

tôi có thể viết

docker images --filter "dangling=true"

Tôi có thể sử dụng những bộ lọc nào khác?

Tôi có thể sử dụng một cái gì đó như thế này?

docker images --filter "running=false"

Câu trả lời:


87

Docker v1.13.0 hỗ trợ các điều kiện sau:

  -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)

Hoặc sử dụng grepđể lọc hình ảnh theo một số giá trị:

$ docker images | grep somevalue

Người giới thiệu


5
Vui lòng cập nhật câu trả lời của bạn - hiện tại, kể từ tháng 2 năm 2017, nó hỗ trợ thêm một số thông số.
Greg Dubicki

5
Nó không hoàn hảo, nhưng bằng cách sử dụng những điều trên, bạn có thể làm những việc như docker images -f "reference=*/*/*latest"- Điều này sẽ giúp bạn có được bất cứ điều gì tương tự k8s:30000/github/someImage:latest. hoặc docker images -f "reference=*/*latest"sẽ giúp bạn k8s:30000/someImage:latest. nếu bạn muốn làm sạch những thứ đó -docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Mark_Eng

Làm thế nào chúng tôi có thể loại trừ một số hình ảnh theo tên repo?
biến

40

Bạn cũng có thể sử dụng REPOSITORYđối số docker imagesđể lọc hình ảnh.

Ví dụ: giả sử chúng ta có các hình ảnh:

$ 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

Chúng tôi có thể lọc rõ ràng tất cả các hình ảnh có tên cụ thể:

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

Docker cũng hỗ trợ 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

Tài liệu chính thức tại đây .


3
Lưu ý rằng *ký tự đại diện không áp dụng cho /tên kho lưu trữ. Do đó, trong ví dụ cuối cùng, để liệt kê tất cả các hình ảnh có thẻ latest, lệnh docker images --filter=reference='*:latest'này là sai. Lệnh đúng là docker images --filter=reference='*/*:latest'.
Tomáš Záluský

Tất cả thời gian tôi đang tìm kiếm --filter name=something- và tất cả, giải pháp đơn giản là bạn không cần một bộ lọc (n rõ ràng) nào cả!
tripleee

2
Đối với những người vẫn còn bối rối ... Nếu bạn đang tìm kiếm hình ảnh openapitools/openapi-generator-cli, thì docker images open*sẽ không tìm thấy nó. Nhưng docker images open*/*sẽ tìm thấy nó.
Ryan Lundy

12

Trong Docker v1.7:

Các bộ lọc hiện được hỗ trợ là:

  • lủng lẳng (boolean - truehoặc false)
  • nhãn ( label=<key>hoặc label=<key>=<value>)

1
Kể từ Docker v1.12, bạn có thể lọc bằng cách sử dụng before=<image-name>[:tag]|<image-id>|<image@digest>&since=(<image-name>[:tag]|<image-id>|<image@digest>)
xwlee

6

Cho tôi,

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

đã lừa. Lệnh ngày có thể tạo ra đầu ra ở cùng một định dạng thông qua

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

cho phép tôi so sánh dấu thời gian. Tuy nhiên, tôi vẫn sử dụng bộ lọc cho hình ảnh treo lơ lửng để thuận tiện.


3

sudo docker hình ảnh - bộ lọc "running = false"

Để làm sạch các thùng chứa cũ đã ngừng hoạt động, bạn có thể sử dụng:
docker container prune

Để xóa hình ảnh không được gắn thẻ, bạn có thể sử dụng:
docker image prune


0

Có một ví dụ khác, hoạt động với phiên bản 17.09 ++:

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

Giải trình:

  • reference - chúng tôi đang tham chiếu hình ảnh theo tên kho lưu trữ;
  • dangling=true - chúng tôi đang xóa các hình ảnh không được gắn thẻ;
  • -q - có nghĩa là yên lặng, chỉ hiển thị ID số của hình ảnh, thay vì toàn bộ dòng.

Lệnh này xóa tất cả hình ảnh có tên kho lưu trữ "registry.gitlab.com/example-app" và không được gắn thẻ (có <none>trong cột thẻ)

Liên kết tham khảo: https://docs.docker.com/engine/reference/commandline/images/#filtering

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.