[英]Can I use amazon ecr credential helper inside a docker container if its installed on my EC2 VM?
我已經在我們的 ec2 實例上安裝了憑證助手GitHub並讓它為我的帳戶工作。 我想要做的是在我的 GitLab CI/CD 管道中使用它,我的 gitlab-runner 實際上在 docker 容器內運行,並為構建、測試和部署階段生成新容器。 這就是我們的測試階段現在的樣子:
image: docker:stable
run_tests:
stage: test
tags:
- test
before_script:
- echo "Starting tests for CI_COMMIT_SHA=$CI_COMMIT_SHA"
- docker run --rm mikesir87/aws-cli aws ecr get-login-password | docker login --username AWS --password-stdin $IMAGE_URL
script:
- docker run --rm $IMAGE_URL:$CI_COMMIT_SHA npm test
這工作正常,但我想看看我是否可以工作如下:
image: docker:stable
run_tests:
image: $IMAGE_URL:$CI_COMMIT_SHA
stage: test
tags:
- test
script:
- npm test
當我嘗試第二個選項時,我no basic auth credentials
獲得no basic auth credentials
。 所以我想知道是否有一種方法可以讓憑證助手映射到 docker 容器,而不必在圖像本身上安裝憑證助手。
將您的運行程序配置為使用帶有DOCKER_AUTH_CONFIG
環境變量的憑證助手。 一種方便的方法是將其全部烘焙到您的圖像中。
因此,您的 gitlab-runner 映像應該包含 docker- docker-credential-ecr-login
二進制文件(或者您應該從主機安裝它)。
FROM gitlab/gitlab-runner:v14.3.2
COPY bin/docker-credential-ecr-login /usr/local/bin/docker-credential-ecr-login
然后當你調用gitlab-runner register
中通DOCKER_AUTH_CONFIG
使用環境變量--env
標志如下:
AUTH_ENV="DOCKER_AUTH_CONFIG={ \"credsStore\": \"ecr-login\" }"
gitlab-runner register \
--non-interactive \
...
--env "${AUTH_ENV}" \
--env "AWS_SDK_LOAD_CONFIG=true" \
...
您還可以在config.toml
、實例 CI/CD 變量或設置 CI/CD 變量的任何地方(組、項目、yaml、觸發器等)中等效地設置它。
只要您的 EC2 實例(或 ECS 任務角色,如果將 gitlab-runner 作為 ECS 任務運行)有權拉取映像,您的作業就能夠從image:
部分中聲明的 ECR 拉取映像。
但是,這不一定會讓您使用 docker-in-docker 自動拉取圖像(例如,在script:
調用docker pull
script:
作業的部分)。 這可以配置(因為您似乎已經在工作),但可能需要額外的設置,具體取決於您的運行器和 IAM 配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.