簡體   English   中英

JFrog Artifactory 錯誤:將具有清單 v2 模式 1 的 Docker 圖像推送到此存儲庫被阻止

[英]JFrog Artifactory error: Pushing Docker images with manifest v2 schema 1 to this repository is blocked

我有兩個 docker 存儲庫在同一個 JFrog 雲帳戶/實例上運行。 一個用於內部候選版本,另一個用於潛在的外部 GC 版本。 我希望能夠構建 docker 圖像並推送到內部存儲庫,讓 QA/UAT go 到城鎮,然后將圖像復制到發布存儲庫。 不想從源代碼重建圖像。 不幸的是,當我嘗試拉取、標記然后推送圖像時,出現錯誤:

未經授權:將具有清單 v2 模式 1 的 Docker 圖像推送到此存儲庫被阻止。

兩個存儲庫都阻止模式 1 清單,但我正在將其推送到內部存儲庫,因此我無法將相同的圖像推送到發布存儲庫並沒有多大意義。

我設置了一個非常簡單的測試來確認(實際存儲庫 URL 被審查):

% docker pull hello-world:latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
...
% docker tag hello-world:latest internal-rc.jfrog.io/hello-world:1.0.0-beta
% docker push internal-rc.jfrog.io/hello-world:1.0.0-beta
The push refers to repository [internal-rc.jfrog.io/hello-world]
9c27e219663c: Pushed
...
% docker system prune -a
...
Total reclaimed space: 131.8MB
% docker image pull internal-rc.jfrog.io/hello-world:1.0.0-beta
1.0.0-beta: Pulling from hello-world
0e03bdcc26d7: Pull complete
...
% docker image tag internal-rc.jfrog.io/hello-world:1.0.0-beta docker-release.jfrog.io/hello-world:1.0.0
% docker image push docker-release.jfrog.io/hello-world:1.0.0
The push refers to repository [docker-release.jfrog.io/hello-world]
9c27e219663c: Layer already exists
[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the docker-release.jfrog.io registry NOW to avoid future disruption. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
unauthorized: Pushing Docker images with manifest v2 schema 1 to this repository is blocked. For more information visit https://www.jfrog.com/confluence/display/RTF/Advanced+Topics#AdvancedTopics-DockerManifestV2Schema1Deprecation

所以我可以將圖片上傳到第一個存儲庫,並確認它使用的是模式 2:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 7004,
    "digest": "sha256:66f750f4871ba45724699d7341ee7135caba46f63fb205351197464a66b55eff"
...

那個mediaType是 v1 重要嗎? 清單本身似乎是第 2 版......但我不知道我將如何更改它,或者為什么它會被允許在一個存儲庫中而不是另一個存儲庫中。

我正在使用我相信最新版本的 docker Docker version 19.03.8, build afacb8b

有人知道那里發生了什么嗎? 架構版本在我第一次上傳和下載之間是否發生了變化? 還是當我標記它或第二次上傳它時?

這個問題的根源大概可以歸類為用戶錯誤。 具體來說,我正在使用的用戶以某種方式從發布存儲庫中刪除了權限。 一旦恢復,一切都會按預期工作。

我說“可能”是因為錯誤消息與實際問題無關,並且花了我 2-3 個小時的時間去追逐野鵝。

所以...如果您看到此錯誤,請提前 go 並仔細檢查權限/訪問權限周圍的所有其他內容,然后再嘗試確定您的圖像架構版本是否存在問題。

我們今天有一個不同的案例,有類似的錯誤。 我在這里添加是因為這是目前谷歌的最高結果。

將具有清單 v2 模式 1 的Docker映像拉到此存儲庫被阻止。

修復是更改遠程存儲庫上的設置。

通過 UI:Artifactory Admin -> Repositories -> Repositories -> Remote 選項卡

然后 select 你的 Docker 集線器倉庫,無論你命名它,然后在基本設置 - > Docker 設置下,取消選中標記為的復選框

圖像清單 v2 模式 1 的塊拉取

之后,我們的圖像再次開始正常拉動。

本地 repos 上有一個類似的復選框用於推送。

對於它的價值,我們使用的是 Artifactory 版本7.18.5 rev 71805900

編輯:我們的特定問題的令人驚訝的是(可能)在此處更詳細地解釋: https://www.jfrog.com/jira/browse/RTFACT-2591

由於 Docker 集線器行為的變化,Docker 拉取請求失敗。 Now Docker Hub HTTP response headers return in lower case, for example, 'content-type' instead of 'Content-Type', causing Artifactory to fail to download and cache Docker images from Docker Hub.

但我們尚未測試升級是否允許我們重新啟用上述復選框。

從構建服務器拉取或推送 docker 映像時,我遇到了以下錯誤。 我在 env 中有一個代理,用於連接 docker 注冊表。 我的 DNS 服務器在解析代理 FQDN 時返回了一個不起作用的 IP 地址。 我有 4 個 DNS 服務器和多個基於區域的代理服務器。 一旦 DNS 更新並返回工作/功能代理,它就開始工作。 也檢查一下網絡側,它可能會解決問題。 錯誤消息最初是誤導性的,我雖然是 docker 層問題,憑據問題..但沒有網絡問題。 對於以下錯誤

拉取圖像配置時出錯:未知 blob 或

[棄用通知] registry v2 schema1 支持將在即將發布的版本中刪除。 請立即聯系 docker 注冊表的管理員,以避免將來出現中斷。 更多信息在https://docs.docker.com/registry/spec/deprecated-schema-v1/清單無效:清單無效。 將開始No.6嘗試。

暫無
暫無

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

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