Docker 存储变量值和执行扫描操作的命令

Docker commands to store variable values and perform scan operation

我有一个任务要对 docker 图像执行扫描,要求是:

  1. 从 artifactory 中拉取 docker 图像。
  2. 列出已下载的图像并仅获取所需的下载图像 (imageID)。
  3. 并将其存储在一个变量中,以便我们可以在运行宁扫描时使用它。

我已经使用 docker 命令从 artifactory 下载图像 -- "docker pull " 并列出它使用-- docker images | grep "$(URL)" | awk '{ print }'

但是我无法使用变量来找到特定的docker imageID,它是在这次扫描中从人工制品中提取的运行,从下面列出的 docker 图像中,以便我可以在我的扫描命令中使用该唯一变量作为 $(variable_name).

例如:命令 docker images | grep "$(URL)" | awk '{ print }' 的输出应该存储在一个唯一的变量中,以便它将用于下一个过程,并且每次触发管道时它应该在存储的那个变量中有一个新值。

有什么办法吗

假设您使用的是bash,您可以使用:

varname=$(docker images | grep "$(URL)" | awk '{ print  }')

但是,有一些方法可以改进您正在做的事情。例如,如果您只对 URL 进行 grep,docker images 格式化输出的方式与提供给 docker pull 的方式不同,您可以通过几种方式获得不同的错误结果.例如:

$ docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Status: Image is up to date for ubuntu:22.04
docker.io/library/ubuntu:22.04
$ docker images | grep ubuntu:22.04  # we get zero hits
$ docker images | grep ubuntu        # we get two hits
ubuntu                                  22.04            d2e4e1f51132   4 weeks ago     77.8MB
ubuntu                                  jammy            f0b07b45d05b   7 weeks ago     77.9MB
$

而是使用 docker images "$URL" --format:

$ URL=ubuntu:22.04
$ docker images "$URL" --format '{{.ID}}'
d2e4e1f51132
$ varname=$(docker images "$URL" --format '{{.ID}}')
$ echo $varname
d2e4e1f51132