Amazon ECR Docker Credential Helper 是 Docker 守護程式的憑證協助程序,可讓您更輕鬆地使用 Amazon Elastic Container Registry。
先決條件
安裝中
亞馬遜 Linux 2023 (AL2023)
亞馬遜 Linux 2 (AL2)
蘋果電腦作業系統
Debian Buster(及未來版本)
Ubuntu 19.04 Disco Dingo 及更新版本
架構Linux
阿爾卑斯Linux
視窗
從源頭
配置
碼頭工人
AWS 憑證
Amazon ECR Docker 憑證助手
用法
故障排除
安全揭露
執照
您的系統上必須至少安裝了 Docker 1.11。
您還必須擁有可用的 AWS 憑證。 有關如何使用不同 AWS 憑證的詳細信息,請參閱 AWS 憑證部分。
您可以從 Amazon Linux 2023 儲存庫安裝 Amazon ECR 憑證幫助程式。
$ sudo dnf install -y amazon-ecr-credential-helper
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
您可以從docker
或ecs
extras 安裝 Amazon ECR Credential Helper。
$ sudo amazon-linux-extras 啟用 docker $ sudo yum 安裝 amazon-ecr-credential-helper
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
核心水龍頭中提供了社區維護的 Homebrew 公式。
$brew 安裝 docker-credential-helper-ecr
在 macOS 上,另一個社群維護的安裝方法是使用 MacPorts。
$ sudo port install docker-credential-helper-ecr
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
您可以從 Debian Buster 檔案安裝 Amazon ECR Credential Helper。 該軟體包也將包含在 Debian 的未來版本中。
$ sudo apt 更新 $ sudo apt install amazon-ecr-credential-helper
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
您可以從 Ubuntu 19.04 Disco Dingo(及更高版本)存檔安裝 Amazon ECR Credential Helper。
$ sudo apt 更新 $ sudo apt install amazon-ecr-credential-helper
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
Arch 用戶儲存庫中提供了社群維護的軟體包。
$ git 克隆 https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd 亞馬遜-ecr-憑證-helper $ makepkg -si
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
Alpine Linux aports 儲存庫中提供了社群維護的軟體包。
$ apk 新增 docker-credential-ecr-login
筆記
徽章僅顯示邊緣,檢查儲存庫是否有穩定版本或新增--repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
Windows 執行檔可透過 GitHub 版本取得。
筆記
Windows ARM 支援被認為是實驗性的。
參見#795
要建置和安裝 Amazon ECR Docker Credential Helper,我們建議在您的系統上安裝 Go 1.19 或更高版本、 git
和make
。
如果您剛剛安裝了 Go,請確保您也已將其新增至您的 PATH 或環境變數 (Windows) 中。例如:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
或在 Windows 中:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
如果您還沒有定義 PATH,則下面的命令將默默失敗,並且運行docker-credential-ecr-login
將輸出: command not found
您可以透過go
命令列工具安裝它。
要安裝運行:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
警告
免責聲明:此儲存庫中的 Dockerfile 用於測試 GitHub Actions CI 中 Amazon ECR 憑證幫助程式二進位檔案的交叉編譯,並作為從原始程式碼本機建置的開發人員公用程式。它是一個參考實現,並未針對建置和運行生產容器進行安全強化。
如果您已經有了 Docker 環境,只需在任何地方複製此儲存庫並執行make build-in-docker
即可。此命令在 Docker 容器內使用 Go 建置二進位檔案並將其輸出到本機目錄。
使用TARGET_GOOS
環境變量,您還可以交叉編譯二進位。
安裝憑證說明程式後,請參閱設定部分,以了解如何設定 Docker 以使用該說明程式的說明。
無需使用docker login
或docker logout
。
將docker-credential-ecr-login
二進位檔案放在PATH
中,並將~/.docker/config.json
檔案的內容設定為:
{“credsStore”:“ecr-登入”}
這會將 Docker 守護程式配置為對所有 Amazon ECR 註冊表使用憑證幫助程式。
Amazon ECR Docker Credential Helper 可與您現有的 docker 登入驗證令牌一起使用:
{“credsStore”:“ecr-login”,“auths”:{“https://index.docker.io/v1/”:{“auth”:[docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
使用 Docker 1.13.0 或更高版本,您可以將 Docker 配置為針對不同的 ECR 註冊表使用不同的憑證助理。若要將此憑證助理用於特定 ECR 註冊表,請使用 ECR 註冊表的 URI 建立一個credHelpers
部分:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
如果您使用docker
對使用不同驗證憑證的註冊表進行操作,這非常有用。
Amazon ECR Docker Credential Helper 可讓您使用儲存在不同位置的 AWS 憑證。 標準的包括:
共享~/.aws/credentials
credentials )
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
環境變數
Amazon ECS 任務的 IAM 角色
Amazon EC2 的 IAM 角色
若要在共用憑證檔案 ( ~/.aws/credentials
) 中使用與不同命名設定檔關聯的憑證,您可以設定AWS_PROFILE
環境變數。
Amazon ECR Docker Credential Helper 讀取並支援 AWS 共用設定檔 ( ~/.aws/config
) 中指定的一些設定選項。 若要停用這些選項,您必須將AWS_SDK_LOAD_CONFIG
環境變數設定為false
。 支援的選項包括:
使用role_arn
和source_profile
指定的假定角色
使用credential_process
指定的外部憑證進程
Web 身份,例如 Kubernetes 中服務帳戶的 IAM 角色(注意:使用具有非 root 使用者的容器的 Kubernetes 使用者可能會遇到此錯誤中所述的權限問題,並且可能需要採用調整 Kubernetes securityContext
解決方法。 )
Amazon ECR Docker Credential Helper 使用與 AWS CLI 和 AWS 開發工具包相同的憑證。有關配置 AWS 憑證的詳細信息,請參閱AWS Command Line Interface 使用者指南中的配置和憑證文件。
憑證必須套用允許存取 Amazon ECR 的政策。
環境變數 | 樣本值 | 描述 |
---|---|---|
AWS_ECR_DISABLE_CACHE | 真的 | 如果設定為非空值,則停用本機檔案驗證快取 |
AWS_ECR_CACHE_DIR | 〜/.ecr | 指定本機檔案驗證快取目錄位置 |
AWS_ECR_IGNORE_CREDS_STORAGE | 真的 | 忽略對 docker 登入或登出的呼叫並假裝成功 |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
如果您已設定其他設定檔以與 AWS CLI 結合使用,則可以透過在呼叫docker
時指定AWS_PROFILE
環境變數來使用這些設定檔。例如:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
無需使用docker login
或docker logout
。
如果您先前已透過手動使用docker login
指令對 ECR 儲存庫進行了驗證,則 Docker 可能儲存了一個已過期的驗證令牌。 Docker 將繼續嘗試使用快取的身份驗證令牌,而不是使用憑證助理。您必須使用docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
明確刪除先前快取的過期令牌。之後,Docker 將開始利用 ECR 憑證助理來取得新憑證,您將不再需要使用docker login
或docker logout
。
來自 Amazon ECR Docker Credential Helper 的日誌儲存在~/.ecr/log
。
有關 Amazon ECR 的更多信息,請參閱 Amazon Elastic Container Registry 使用者指南。
標記為實驗性的功能可以選擇供使用者測試和提供回饋。
如果您測試任何實驗性功能,您可以透過該功能的追蹤問題提供有關以下方面的回饋:
您對該功能的體驗
問題或問題
建議的改進
實驗功能在設計和實作上都不完整。可能隨時引入向後不相容的更改,或完全放棄支援。因此,不建議在生產環境中使用實驗性功能。
如果您認為發現了潛在的安全問題,請不要將其發佈在問題中。 相反,請按照此處的說明操作或直接向 AWS 安全人員發送電子郵件。
Amazon ECR Docker Credential Helper 根據 Apache 2.0 授權取得授權。