我可以写
docker images --filter "dangling=true"
Run Code Online (Sandbox Code Playgroud)
我可以使用哪些其他过滤器?
我可以用这样的东西吗?
docker images --filter "running=false"
Run Code Online (Sandbox Code Playgroud)
stu*_*udy 66
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)
Run Code Online (Sandbox Code Playgroud)
或者用于grep按某些值过滤图像:
$ docker images | grep somevalue
Run Code Online (Sandbox Code Playgroud)
Wil*_*hes 29
您还可以使用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
Run Code Online (Sandbox Code Playgroud)
我们可以显式过滤具有给定名称的所有图像:
$ docker images example.com/bar
REPOSITORY TAG IMAGE ID CREATED SIZE
example.com/bar latest b94c37de2801 9 months ago 285 MB
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我想要找到本地图像和用远程存储库标记的图像的匹配项(下面示例中的my-repo.example.com)。
例如,
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-good-app latest 9a8742ad82d3 24 hours ago 126MB
my-repo.example.com/mine/my-good-app latest 9a8742ad82d3 24 hours ago 126MB
my-repo.example.com/mine/demo-docker latest c10baf5231a1 2 weeks ago 200MB
Run Code Online (Sandbox Code Playgroud)
我厌倦了试图弄清楚过滤是如何工作的,所以我只是回到我所知道的。
docker images | grep my-good-app | awk '{print $3}' | uniq
Run Code Online (Sandbox Code Playgroud)
这将匹配任何具有模式的图像名称my-good-app。我无法得到包含两者的其他答案(没有存储库的图像和带有存储库名称的图像,如my-repo.example.com我的示例中所示)。
然后要删除上面匹配的图像,我运行:
docker rmi -f $(docker images | grep my-good-app | awk '{print $3}' | uniq)
Run Code Online (Sandbox Code Playgroud)
小智 6
为了我,
docker images -q | while read IMAGE_ID; do
docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done
Run Code Online (Sandbox Code Playgroud)
做了伎俩.date命令可以通过相同的格式生成输出
date -Ins --date='10 weeks ago'
Run Code Online (Sandbox Code Playgroud)
这允许我比较时间戳.不过,为了方便,我仍然使用滤镜来悬挂图像.
如果您正在寻找基于创建日期和存储库/标签删除映像的解决方案,则 Docker CLI 缺乏适当的过滤:
docker image prune--since确实通过和标志接受时间戳--until(例如:--until=24h),但不允许通过存储库/标签进行过滤。docker images并且docker image ls接受存储库/标签过滤器(例如--filter=reference='registry.gitlab.com/group/*/*:)但不接受时间戳 - 仅接受--since和中的其他图像ID --before(例如--since=586026f10754)我写了一篇(七行)单行文字来满足我认为的常见需求:根据存储库和创建日期删除图像。干得好:
docker image rm $(docker images \
--filter=reference='registry.gitlab.com/group/*/*/*:*' \
--format "{{.ID}}-{{.CreatedAt}}'" | \
cut -d " " -f 1 | \
sed 's/-/ /'| \
awk -v date="$(date --date='3 days ago' +%Y-%m-%d)" '$NF < date' \
cut -d " " -f 1)
Run Code Online (Sandbox Code Playgroud)
定制:
要求:bash、awk、cut、sed显然docker。
| 归档时间: |
|
| 查看次数: |
54788 次 |
| 最近记录: |