是否可以列出大小小于 10MB 的 Docker 镜像?

是否可以列出大小小于 10MB 的 Docker 镜像?

我尝试使用此命令列出大小小于 10MB 的 Docker 映像:

> docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | awk '{ if ($2 < "10MB") print $0 }'

registry.cn-hongkong.aliyuncs.com/reddwarf-pro/chat-server:ac9b7e52b86a5c86fdd7b613a211e33247018ad3 1.84GB
cruise-radar:latest 1.11GB
busybox:latest  1.41MB
rust:1.54-bullseye  1.5GB

似乎它没有按预期工作。我错过了什么吗?

答案1

正如 @JaromandaX 在评论中提到的,问题在于docker images产生人类可读的大小信息,如10MB1.1GB

虽然可以通过解析后缀并将其全部转换为字节来转换这些值,但还有另一种选择:您可以直接与 Docker API 交互,而不是使用命令docker images;这里的优点是 API 报告图像大小以字节为单位,因此不需要转换。

使用curl

curl --unix-socket /var/run/docker.sock http://localhost/images/json |
  jq -r '.[]|select(.Size < 10485760)|[.RepoTags[0], .Size]|@tsv'

在我的系统上,这会产生如下内容:

serjs/go-socks5-proxy:latest    4675775
chedched/foo:latest     7282688
cilium/pwru:latest      4263936
alpinelinux/darkhttpd:latest    5618779
traefik/whoami:latest   6508005
alpine:latest   5544164
containous/whoami:latest        7373346
.
.
.

相关内容