如何創建並推送 Docker 映像檔至 AWS ECR

 今天我們來聊聊如何將 Docker 映像檔推送到 AWS 的 Elastic Container Registry (ECR)


前期準備

在開始之前,我們需要確保已完成以下準備:

  1. 安裝 AWS CLI:確保你的電腦上已安裝並配置好 AWS CLI。
  2. 安裝 Docker:確保 Docker 已安裝並正在運行。
  3. 創建 ECR 儲存庫:你需要在 AWS 賬戶中創建一個 ECR 儲存庫。

發生的問題

在創建 ECR 儲存庫時,你可能會遇到以下錯誤訊息:

not authorized to perform: ecr:CreateRepository

這表示當前的 AWS Identity and Access Management (IAM) 用戶或角色缺乏必要的權限。

如何解決權限問題

要解決這類問題,你需要更新 IAM 用戶或角色的權限。下面是詳細步驟:

  1. 更新 IAM 權限政策

    我們需要為 IAM 用戶或角色添加一個政策,允許他們創建 ECR 儲存庫。你可以創建如下的新政策:

    json
  1. {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ecr:CreateRepository",
            "ecr:DescribeRepositories",
            "ecr:ListImages",
            "ecr:DeleteRepository",
            "ecr:DeleteRepositoryPolicy",
            "ecr:DescribeImages",
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage",
            "ecr:PutImage"
          ],
          "Resource": "*"
        }
      ]
    }
  2. 附加政策

    • 進入 AWS IAM 主控台
    • 找到你使用的 IAM 用戶或角色。
    • 附加你創建的政策,或者選擇 AWS 提供的管理政策,比如 AmazonEC2ContainerRegistryFullAccess,它可以提供更廣泛的權限。

驗證和測試

政策設置完成後,重新嘗試創建 ECR 儲存庫:

bash
aws ecr create-repository --repository-name your-repo-name

推送 Docker 映像檔到 ECR

接下來,讓我們把 Docker 映像檔準備好並推送到 ECR。

  1. Docker 連線到 ECR

    使用 AWS CLI 獲取登入密鑰並執行 Docker 登入:

    bash
  • aws ecr get-login-password --region 你的區域 | docker login --username AWS --password-stdin 你的帳號ID.dkr.ecr.你的區域.amazonaws.com
  • 建構 Docker 映像檔

    bash
  • docker build -t 映像檔名稱:標籤 .
  • 標註映像檔

    bash
  • docker tag 映像檔名稱:標籤 你的帳號ID.dkr.ecr.你的區域.amazonaws.com/你的儲存庫名稱:標籤
  • 推送映像檔到 ECR

    bash
    1. docker push 你的帳號ID.dkr.ecr.你的區域.amazonaws.com/你的儲存庫名稱:標籤

    小結

    在解決 IAM 權限問題並成功地創建 ECR 儲存庫後,你應該就可以順利地將 Docker 映像檔推送到 AWS ECR 了。

    留言

    此網誌的熱門文章

    怎麼讓 VS Code 自動排版變漂亮? Prettier ESLint

    Flutter 錄音應用中的權限請求問題