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:
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
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)
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
*
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'
.
--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ả!
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ó.
Trong Docker v1.7:
Các bộ lọc hiện được hỗ trợ là:
true
hoặc false
)label=<key>
hoặc label=<key>=<value>
)before=<image-name>[:tag]|<image-id>|<image@digest>
&since=(<image-name>[:tag]|<image-id>|<image@digest>)
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.
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
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