我的任務是對 docker 映像執行掃描,要求是:
- 從工件中拉取 docker 影像。
- 列出已下載的影像并僅獲取所需的下載影像 (imageID)。
- 并將其存盤在一個變數中,以便我們可以在運行掃描時使用它。
我已經使用 docker 命令從工件下載了影像—— “ docker pull <image_name>”并使用——docker images | grep "$(URL)" | awk '{ print $3 }'
但是我無法使用變數來查找從本次掃描運行中的工件中提取的特定 docker imageID,從列出的 docker 影像中,以便我可以在我的掃描命令中將該唯一變數用作 $(variable_name)。
例如:命令的輸出docker images | grep "$(URL)" | awk '{ print $3 }'應存盤在一個唯一變數中,以便將其用于下一個行程,并且每次觸發管道時,它都應該在存盤的變數中有一個新值。
有沒有辦法這樣做。
uj5u.com熱心網友回復:
假設您使用的是 bash,您可以使用:
varname=$(docker images | grep "$(URL)" | awk '{ print $3 }')
但是,有一些方法可以改進您正在做的事情。例如,如果您只對 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484306.html
標籤:码头工人 壳 天蓝色的devops 天蓝色管道发布管道
上一篇:使用docker-composeup輸入多個命令列引數
下一篇:不受支持的 Mac 上的通用控制
