我正在嘗試在 bash 腳本中從我的私人 docker 注冊表 mydockerregistry.com 中洗掉影像標簽。身份驗證是通過注冊表 web mydockerregistry.com:8080 完成的,所以我首先使用
TOKEN=`curl -s \
-H "Content-Type: application/json" --user myuser:mypassword \
"http://mydockerregistry.com:8080/api/auth?service=mydockerregistry.com&scope=repository:my-repo/:*" \
| jq -r .token`
有了這個令牌,我可以瀏覽注冊表,獲取我想要洗掉的標簽等。使用標簽編號我可以使用
DIGEST=`curl -vk \
-H "Authorization:Bearer $TOKEN" \
-H "Accept:application/vnd.docker.distribution.manifest.v2 json" \
https://mydockerregistry.com/v2/my-repo/manifests/latest 2>&1 \
|grep "< Docker-Content-Digest:" |awk '{print $3}'`
但是,當我跑步時
curl \
-H "Authorization:Bearer $TOKEN" \
-H "Accept:application/vnd.docker.distribution.manifest.v2 json" \
-X DELETE \
https://mydockerregistry.com/v2/my-repo/manifests/$DIGEST
我收到錯誤:
< HTTP/1.1 401 Unauthorized
< Content-Type: application/json; charset=utf-8
< Docker-Distribution-Api-Version: registry/2.0
< Www-Authenticate: Bearer realm="mydockerregistry.com:8080/api/auth",service="mydockerregistry.com",scope="repository:my-repo:*",error="insufficient_scope"
< X-Content-Type-Options: nosniff
< Date: Mon, 18 Oct 2021 21:29:00 GMT
< Content-Length: 160
<
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"my-repo","Action":"*"}]}]}
* Connection #0 to host mydockerregistry.com left intact
我嘗試將范圍更改為拉動;拉,推,但我總是得到 401 仍然完全按照 Www-Authenticate 標頭所說的那樣做。
我錯過了什么?
uj5u.com熱心網友回復:
假設身份驗證不是真正的問題(您可能可以推拉該注冊表),您是否啟用了默認禁用的洗掉?
https://docs.docker.com/registry/configuration/#delete
另請注意,一旦您洗掉清單,檔案系統層仍然是注冊表的一部分,因此除非您運行垃圾收集,否則您的磁盤空間消耗不會減少。
https://docs.docker.com/registry/garbage-collection/
uj5u.com熱心網友回復:
您可能在標題的冒號后缺少空格(不確定 curl 是否會自動修復該問題),并且 DELETE api 不需要 Accept 標題:
curl \
-H "Authorization: Bearer $TOKEN" \
-X DELETE \
https://mydockerregistry.com/v2/my-repo/manifests/$DIGEST
除此之外,仔細檢查您正在運行的命令中令牌和摘要的值,然后檢查注冊表服務器上的日志。
uj5u.com熱心網友回復:
嗯,我終于找到了問題所在。
我試圖運行腳本的用戶有一個角色“admin”,它只有推送和拉取權限,沒有 *.
我創建了一個名為“delete-repo”的新角色,其權限為“pull、push、*”,我將它分配給了我的用戶,然后奇跡發生了。
感謝您的幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330454.html
