Docker-in-docker/GitLab CI:添加和使用凭证助手

Docker-in-docker/GitLab CI:添加和使用凭证助手

我正在为我的组织构建一个 GitLab CI/CD 管道,用于我们的一个项目。此管道中的一项作业将在我们自己的一台服务器上运行的 Docker 执行器 GitLab 运行器上执行。该作业涉及将 imagedocker:20.10.20与 service 结合使用docker:20.10.20-dind。目标是从我的项目构建一个 Docker 镜像,并将其上传到项目的容器注册表中托管在 gitlab.com 本身上(因此不在 Amazon ECR 上)。我已使用以下作业配置启动并运行它.gitlab-ci.yml

docker-image-build:
  stage: Docker image build
  image: docker:20.10.20
  services:
    - name: docker:20.10.20-dind
      alias: docker
  tags:
    - docker-runner
  script:
    - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
    - docker build --pull -m 3g --memory-swap -1 -t $CI_REGISTRY_IMAGE --build-arg FOO=$FOO --build-arg BAR=$BAR .
    - docker push $CI_REGISTRY_IMAGE

然而,在docker login命令中script我收到了与网络安全相关的警告:

Login Succeeded
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

将未加密的凭证存储在可能残留的人工制品中对我们来说是一个大问题,因为我们非常关心网络安全。然而,我似乎找不到安装docker-credential-helpers在docker-in-docker容器中。 (我想或者认为我必须使用pass```` based credential helper.) It seems to be a very barebone Linux image without a package manager or compiler. It only has tools such as wget and tar, so I could be able to download binaries and I can in fact install thedocker-credential-pass binary itself. But I'm mostly stuck with no way to getpass installed, let alone its dependencygpg```以及足够的熵源。

我陷入困境,不知道该如何继续。任何建议都将不胜感激。在这种情况下我应该切换到 shell 执行器吗?

提前谢谢你!
Joshua

相关内容