簡體   English   中英

docker 推送錯誤“被拒絕:請求訪問資源被拒絕”

[英]docker push error "denied: requested access to the resource is denied"

嘗試將圖像推送到Docker Hub上的公共存儲庫時會發生此錯誤。 我嘗試過的其他注冊表沒有問題。

我看了很多網站、博客,包括 StackOverflow,但仍然沒有明確的答案。

您可以嘗試按如下方式重現此問題。

本地主機上的圖像

如上圖所示,我在本地 docker 主機上有一個圖像aspc-mvc-app 如圖所示,它有 3 個標簽 - 1.0.51.0.5.latestlatest

假設我們嘗試在 Docker Hub 使用賬戶名janedoe進行推送

根據Docker.io和許多其他站點上的文檔,推送有 3 個步驟。

(1) 登入

docker login "index.docker.io" -u janedoe -p <password>

--> 我得到Login Succeeded ,這很好!

(2) 添加一個或多個標簽

在 3 個標簽中,我們只標記latest的 .

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app

--> 提示沒有錯誤返回。 到目前為止,一切都很好。

(3) 推

docker push janedoe/aspc-mvc-app

--> 這是錯誤發生的地方。

如下面的屏幕截圖所示,初始檢查似乎正常進行,直到出現錯誤被拒絕:請求訪問資源被拒絕

在此處輸入圖像描述

在步驟 (2) 中,我嘗試了許多其他格式,包括以下格式。

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app:latest
docker tag janedoe/aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag aspc-mvc-app:latest janedoe/aspc-mvc-app
docker tag aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag 306a8fd79d88 janedoe/aspc-mvc-app
docker tag 306a8fd79d88 janedoe/aspc-mvc-app:latest

全部失敗並出現相同的錯誤。

作為比較,使用完全相同的圖像,我可以毫無問題地推送到 Azure Container Registry。

由於 Docker Hub 如此受歡迎,任何人都可以闡明其中的奧秘,或者是否有任何地方有詳細的文檔?

2017 年 5 月 9 日更新

我非常了解 docker cli 和服務器版本。 現在,我的 cli 是17.05.0-ce-rc1 ,服務器是17.04.0-ce ,如下所示。

在此處輸入圖像描述

解決方法很簡單,就是在步驟(1)改變登錄方式。

docker login -u janedoe -p <password>

其他一切都可以保持上述方式。 鏡像成功推送到Docker Hub!

1)首先通過在終端中輸入sudo docker login 輸入用戶名和密碼

2) 訪問您的 docker 帳戶並創建一個新的存儲庫。 就我而言,我創建了一個存儲庫zawad1879/dockerhub

3)假設您有一個docker鏡像,其存儲庫名稱為: zawad/django和標簽: latest

在這種情況下,您需要使用您希望的標簽來標記此圖像。 我決定用標簽來標記它: myfirstimagepush 您可以通過鍵入命令來標記圖像

sudo docker tag zawad/django:latest zawad1879/dockerhub:firstimagepush

4)最后使用命令將圖像推送到您的存儲庫

sudo docker push zawad1879/dockerhub:firstimagepush

這里的所有都是它的。

我也有同樣的問題,但在嘗試了一些組合后,這奏效了。

每當您推送時 - 指的是docker.io/后跟注冊表路徑。

在我的情況,我的用戶名是rushmith,我創建了一個叫做下rushmith碼頭工人的樣本庫。

我的鏈接是: “hub.docker.com/r/rushmith/docker/”

現在我為我想要推送的圖像創建了一個標簽: rushmith/docker

它成功了。

$ docker login -u rushmith

(輸入密碼,然后輸入如下)

$ docker push rushmith/docker:latest

輸出:

The push refers to a repository [docker.io/rushmith/docker]
7fbb0e1e64cb: Pushed
33f1a94ed7fc: Pushed 
b27287a6dbce: Pushed 
47c2386f248c: Pushed 
2be95f0d8a0c: Pushed 
2df9b8def18a: Pushed 
latest: digest: 
sha256:4d749d86b4a2d9304a50df474f6236140dc2d169b9aabc354cdbc6ac107390f2 size: 1569

我希望這個遲到的解決方案可以幫助某人。 此錯誤消息的原因是您沒有正確命名您的圖像 假設您在 docker.io 上的帳戶名稱是your-name那么您的新倉庫名稱將是your-name/your-new-image-name

為了推送您的圖像,首先您必須將您的本地圖像標記(命名)為:

docker tag local-image[:tag-name] your-name/your-new-image-name[:tag-name]

括號中的內容是可選的。 您可能想使用docker image ls檢查結果。 然后將您的圖像推送到您的 docker 存儲庫:

docker push your-name/your-new-image-name[:tag-name]

完畢! 您的圖像已推送到 docker 存儲庫。

經過1小時的上述不同方式的掙扎,我在我的mbp中重新安裝了最新版本的Docker Desktop應用程序,然后它就解決了。

neweast版本是20.10.2,老版本是17.x,5年前安裝的。

您可以按照以下步驟操作:

第一步: docker login -u <username> -p <password>

將出現“登錄成功”消息,確認您登錄成功。

第 2 步:現在為了推送圖像,只需確保您使用的路徑必須在標簽中包含您的用戶名。

例如:假設鏈接是: “hub.docker.com/u/xyz/”創建一個標簽以將其鏡像為docker push xyz/docker:latest

如果您已經有一些不同的標簽,請使用命令更改它

docker tag <old tag> <new tag>

希望這可以幫助。

從網站創建存儲庫。

您可能沒有創建存儲庫的權限。

docker push 不會創建存儲庫名稱,因此如果不存在,則表示訪問不可用

首先,您需要確保您已登錄您的帳戶

在此處輸入圖片說明

您需要創建一個存儲庫,以下是創建存儲庫的命令 -

docker tag local-image:tagname你的賬戶名/tagname

碼頭工人推你的賬戶名/標記名在此處輸入圖片說明

這對我有用。

> docker login -u janedoe
Password:
Login Succeeded 

> docker tag myapp:0.0.1 janedoe/myflinkapp:0.0.1

> docker push janedoe/myapp:0.0.1
The push refers to repository [docker.io/janedoe/myapp]
b763be657a2c: Pushed
e534dae385a8: Pushed
5af3d5d57035: Pushed
0e44828b51e2: Pushed
fdd771f27095: Pushed
ef9a7b8862f4: Pushed
a1f2f42922b1: Pushed
4762552ad7d8: Pushed
0.0.1: digest: sha256:0069ee2c39b422e64f0493d2b2e9cbe7736a size: 2154

就我而言,即使在成功登錄 Docker 注冊表后,我也遇到了這個問題。

因此,我嘗試以 sudo 身份運行 docker 推送,它成功了。

確保您遵循以下步驟:

  1. 運行docker login
  2. 登錄成功后,運行docker push命令
  3. 如果推送失敗,請運行: sudo docker push repoName:tagName

如果您使用 2FA 並運行

docker login -u <your_docker_user_name>

您將Login successful ,但無法推送。

這是因為您使用的是 2FA,它需要一次性密碼才能登錄您的帳戶。

為了能夠在啟用 2FA 的情況下進行推送,您需要使用訪問令牌。 要在Docker Hub 網站上生成一個 go 到Account settings/Security ,然后單擊New Access Token 對於Access Permissions ,最好選擇Read & Write - 這是能夠推送的入門級別。 僅在您確實需要時才生成Read, Write, Delete令牌!

系統將提示您下一步的操作說明。 只是為了保持完整的答案,你必須運行

docker login -u <you_docker_username>

並在提示輸入Password時粘貼您的Personal Access Token

重要提示:將您的Personal Access Token保存在密碼管理器中,切勿與任何人共享,切勿推送到 github 或添加到您的源代碼中。 絕不。 請。

現在,當您運行docker push <your_docker_username>/<your_docker_repo_name>:<tag_of_your_image>時,您應該能夠將圖像推送到 Docker Hub。

我有同樣的問題,它通過使用 sudo 運行 push 命令解決了。 我認為這只是一個特權問題。

sudo docker push janedoe/aspc-mvc-app

暫無
暫無

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

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