Docker-in-docker/GitLab CI: добавление и использование помощника по учетным данным

В своей организации я создаю конвейер GitLab CI/CD для одного из наших проектов. Одно задание в этом конвейере будет выполняться на исполнителе Docker GitLab, работающем на одном из наших собственных серверов. Работа предполагает использование изображенияdocker:20.10.20вместе с обслуживанием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 the docker-credential-passbinary itself. But I'm mostly stuck with no way to getпроходитьinstalled, let alone its dependencygpg``` вместе с достаточным источником энтропии.

Я застрял и не знаю, как действовать дальше. Любые предложения будут очень признательны. Должен ли я в этом случае переключиться на исполнителя оболочки?

Заранее спасибо!
Джошуа

0 ответов

Другие вопросы по тегам