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 dependency
gpg``` вместе с достаточным источником энтропии.
Я застрял и не знаю, как действовать дальше. Любые предложения будут очень признательны. Должен ли я в этом случае переключиться на исполнителя оболочки?
Заранее спасибо!
Джошуа