簡體   English   中英

如果 docker 容器安裝在我的 EC2 虛擬機上,我可以在 docker 容器中使用 amazon ecr 憑證助手嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM