簡體   English   中英

如何提取Docker映像標簽的值

[英]How to extract the value of a Docker image's tag

給定一個帶有多個圖像標簽的注冊表,例如:

myimage  0.0.3              
myimage  0.0.2              

我可以以某種方式將0.0.3 (或更確切地說是最新標記)提取到bash中的變量中嗎?
我想找出此值,以便隨后可以tagValue++並將其用於Jenkins管道中,以執行以下操作:

  • docker build以使用更新的標簽構建下一個圖像
  • docker push將這個新的圖像標簽docker push送到注冊表
  • kubectl set image以使用已更新的圖像標簽更新帶有pod的Kubernetes集群

當然,如果有人有更好的策略,我全力以赴!

備擇方案:

  • 從Kubernetes部署的YAML文件中獲取值,然后運行上述操作,使用更新的標簽更新文件,然后將更新的文件推回存儲庫?

  • 與上述替代方法相同,但使用kubectl replace代替kubectl set image 示例來自文檔)

我們將其與內部v2 docker注冊表一起使用。 它取決於jq,因此它可能不適合您。 注冊表似乎按照添加的順序返回它們,所以我們只是獲取最新的,如果您有足夠新的版本,則使用jq很有可能:

tags_url="https://hot.registry.example.com/v2/somerepoprefix/${repo}/tags/list"
newest_tag=$(curl $tags_url | jq -r '(.tags | reverse)[0]')

不同的方法,但是我使用詹金斯${BUILD_NUMBER}環境變量來標記圖像。 另外,我向前移動了一個latest標簽,因此我有兩種選擇。 這會導致同一張圖片多次標記有不同的內部版本號(如果沒有更改),但是我的設置很好。 因為我使用不同的Jenkins作業來構建圖像和更新k8,所以我使用jenkins api獲取各個作業的最新內部版本號:

containerTag=$(curl -u $user:$cred 'http://localhost:8080/job/$jobname/lastStableBuild/buildNumber')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM