Docker 尚未取得上傳影像到 Azure Container Registry (ACR) 的權限

在執行 docker push 指令, 回傳錯誤訊息:

refers to repository: error from registry: authentication required

雖然你可能已經在 Azure CLI 登入,但 Docker 需要獨立的認證才能進行 push 動作。

最簡單的解決方法是執行以下指令來讓 Azure CLI 幫 Docker 完成登入:

az acr login --name $ACR_NAME

成功後會顯示 Login Succeeded。這時再次執行 docker push 應該就能順利開始上傳。如果你的環境權限受到嚴格控管,請確認你的帳號在該 ACR 資源上擁有 AcrPush 的角色權限。


目前的登入帳號具備哪些 ACR 權限

要確認你在 Azure Container Registry (ACR) 上的權限,可以使用 Azure CLI 查詢目前的登入帳號,並檢查該帳號在該資源上被分配的角色。

請依序執行以下指令來進行診斷:

確認目前登入的帳號

首先確認你是以哪一個帳號登入 Azure CLI,因為有時候多個帳號切換會導致權限混淆。

az account show --query user.name --output tsv

查詢 ACR 的權限分配

接著,你可以查詢該 ACR 資源上所有的角色分配 (Role Assignments)。請將指令中的變數替換為你的資源名稱,或者直接執行:

az role assignment list --scope $ACR_ID --output table

在輸出的表格中,請檢查 RoleDefinitionName 這一欄。要能成功執行 docker push,你的帳號必須擁有以下其中一種角色:

  • AcrPush:具備推送與拉取影像的權限。
  • Contributor (參與者):具備管理資源的權限,包含推送影像。
  • Owner (擁有者):具備所有權限。

如果權限不足的解決方案

如果你發現清單中沒有你的帳號,或者權限只有 AcrPull (只能下載),可以聯繫管理員,或是在具備權限的情況下執行以下指令為自己加權:

az role assignment create –assignee “你的帳號Email” –role AcrPush –scope $ACR_ID

完成權限分配後,建議重新執行一次 az acr login –name $ACR_NAME 以確保憑證更新。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *