Amazon 的私有註冊表身份 ECR - Amazon ECR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon 的私有註冊表身份 ECR

您可以使用 AWS Management Console AWS CLI、或 AWS SDKs來建立和管理私有存放庫。您可以使用這些方法來在映像上執行部分動作,例如列清單或刪除。這些用戶端使用標準 AWS 驗證方法。即使您可以使用 Amazon ECR API 推送和提取圖像,您更有可能使用 Docker CLI 或特定於語言的 Docker 庫。

Docker CLI 不支援原生IAM驗證方法。必須採取其他步驟,以便 Amazon ECR 能夠驗證和授權 Docker 推送和提取請求。

下列各節詳述的登錄檔驗證方法可用。

使用 Amazon ECR 憑證助手

Amazon ECR 提供了一個 Docker 憑據幫助程序,這使得在將圖像推送和提取到 Amazon 時更容易存儲和使用 Docker 憑據。ECR如需安裝和設定步驟,請參閱 Amazon ECR Docker 登入資料協助程式

注意

Amazon D ECR ocker 登入資料協助程式目前不支援多重要素身份驗證 (MFA)。

使用授權字符

授權令牌的權限範圍與用於檢索身份驗證令牌的IAM主體的權限範圍相匹配。身份驗證令牌用於訪問您的IAM主體可以訪問的任何 Amazon ECR 註冊表,並且有效期為 12 小時。若要取得授權權杖,您必須使用此GetAuthorizationTokenAPI作業擷取包含使用者名稱AWS和編碼密碼的 base64 編碼授權權杖。該 AWS CLI get-login-password命令通過檢索並解碼授權令牌來簡化此操作,然後您可以將其傳輸到docker login命令中進行身份驗證。

通過獲取登錄將 Docker 身份驗證到 Amazon ECR 私有註冊表
  • 要使用向 Amazon ECR 註冊表驗證 Docker get-login-password,請運行該aws ecr get-login-password命令。將身份驗證令牌傳遞給命docker login令時,請使用用戶名AWS的值並指定URI要對其進行身份驗證的 Amazon ECR 註冊表。如果是向多個登錄進行驗證,您必須針對每個登錄重複此命令。

    重要

    若您收到錯誤,請安裝或升級至最新版本的 AWS CLI。如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的安裝 AWS Command Line Interface

    • get-login-password (AWS CLI)

      aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
    • 得到-ECRLoginCommand(AWS Tools for Windows PowerShell)

      (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

使用HTTPAPI驗證

Amazon ECR 支持碼頭註冊表HTTPAPI。但是,由於 Amazon ECR 是私有註冊表,因此您必須在每個HTTP請求中提供授權令牌。您可以使用 for -H 選項添加HTTP授權標頭,curl並傳遞命令提供的授權get-authorization-token AWS CLI 令牌。

使用 Amazon 進行身份驗證 ECR HTTP API
  1. 使用擷取授權權杖, AWS CLI 並將其設定為環境變數。

    TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
  2. 若要驗證API,請將$TOKEN變數傳遞給的-H選項curl。例如,下列命令會列出 Amazon ECR 儲存庫中的映像標籤。如需詳細資訊,請參閱 D ocker 登錄HTTPAPI參考文件。

    curl -i -H "Authorization: Basic $TOKEN" https://aws_account_id.dkr.ecr.region.amazonaws.com/v2/amazonlinux/tags/list

    其輸出如下:

    HTTP/1.1 200 OK
    Content-Type: text/plain; charset=utf-8
    Date: Thu, 04 Jan 2018 16:06:59 GMT
    Docker-Distribution-Api-Version: registry/2.0
    Content-Length: 50
    Connection: keep-alive
    
    {"name":"amazonlinux","tags":["2017.09","latest"]}