Docker-in-docker/GitLab CI: agregar y usar el asistente de credenciales

Docker-in-docker/GitLab CI: agregar y usar el asistente de credenciales

Para mi organización, estoy construyendo una canalización de CI/CD de GitLab para uno de nuestros proyectos. Un trabajo en esta canalización se ejecutará en un ejecutor GitLab ejecutor de Docker que se ejecuta en uno de nuestros propios servidores. El trabajo implica el uso de la imagen docker:20.10.20junto con el servicio docker:20.10.20-dind. El objetivo es crear una imagen de Docker a partir de mi proyecto que se cargue en el registro de contenedores del proyecto.alojado en gitlab.com (por lo tanto, NO en Amazon ECR). Tengo esto en funcionamiento con la siguiente configuración de trabajo en .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

Sin embargo, en el docker logincomando scriptrecibo una advertencia relacionada con la ciberseguridad:

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

Almacenar credenciales sin cifrar en un artefacto que podría permanecer ahí es un gran problema para nosotros, ya que estamos muy preocupados por la ciberseguridad. Sin embargo, parece que no puedo encontrar una manera de instalarayudantes-de-credenciales-dockeren el contenedor acoplable en acoplable. (Me gustaría o creo que tengo que usar el 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``` junto con una fuente suficiente de entropía.

Estoy estancado y no sé cómo proceder. Cualquier sugerencia será muy apreciada. ¿Debo cambiar a un ejecutor de shell en este caso?

¡Gracias de antemano!
Josué

información relacionada