Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

313
Vistas
Docker: compartir clave privada a través de argumentos

Quiero compartir mi clave privada de github en mi contenedor docker.

Estoy pensando en compartirlo a través de docker-compose.yml a través de ARG.

¿Es posible compartir la clave privada usando ARG como se describe aquí? Pase una variable a un Dockerfile desde un archivo docker-compose.yml

 # docker-compose.yml file version: '2' services: my_service: build: context: . dockerfile: ./docker/Dockerfile args: - PRIVATE_KEY=MULTI-LINE PLAIN TEXT RSA PRIVATE KEY

y luego espero usarlo en mi Dockerfile como:

 ARG PRIVATE_KEY RUN echo $PRIVATE_KEY >> ~/.ssh/id_rsa RUN pip install git+ssh://git@github.com/...

¿Es posible a través de ARG?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si puede usar la última versión de docker 1.13 (o 17.03 ce), puede usar el secreto de enjambre de docker: consulte " Gestión de secretos en clústeres de enjambre de docker"

Eso le permite asociar un secreto a un contenedor que está lanzando:

 docker service create --name test \ --secret my_secret \ --restart-condition none \ alpine cat /run/secrets/my_secret

Si Docker Swarm no es una opción en su caso, puede intentar configurar un asistente de credenciales de Docker .
Consulte " Deshacerse de las credenciales de texto sin formato de Docker ". Pero eso podría no aplicarse a una clave ssh privada.


Puede consultar otras opciones relevantes en " Secretos y capacidades de MENTIRA: El estado de la gestión moderna de secretos (2017) ", utilizando un administrador de secretos independiente como Hashicorp Vault .

about 4 years ago · Santiago Trujillo Denunciar

0

Aunque el ARG en sí no persistirá en la imagen creada, cuando haga referencia a la variable ARG en algún lugar del Dockerfile, estará en el historial:

 FROM busybox ARG SECRET RUN set -uex; \ echo "$SECRET" > /root/.ssh/id_rsa; \ do_deploy_work; \ rm /root/.ssh/id_rsa

Como señala VonC , ahora hay una función de enjambre para almacenar y administrar secretos, pero eso (todavía) no resuelve el problema del tiempo de compilación.

Construye

Próximamente en Docker ~ 1.14 (o cualquiera que sea el nombre de la nueva versión equivalente) debería ser el --build-secret (también #28079 ) que le permite montar un archivo secreto durante una compilación.

Mientras tanto, una de las soluciones es ejecutar un servicio de red en algún lugar del que pueda usar un cliente para extraer secretos durante la compilación. Luego, si la compilación coloca el secreto en un archivo, como ~/.ssh/id_rsa , el archivo debe eliminarse antes de que se complete el paso RUN que lo creó.

La solución más simple que he visto es servir un archivo con nc :

 docker network create build docker run --name=secret \ --net=build \ --detach \ -v ~/.ssh/id_rsa:/id_rsa \ busybox \ sh -c 'nc -lp 8000 < /id_rsa' docker build --network=build .

Luego recopile el secreto, guárdelo, utilícelo y elimínelo en el paso EJECUTAR de RUN .

 FROM busybox RUN set -uex; \ nc secret 8000 > /id_rsa; \ cat /id_rsa; \ rm /id_rsa

Proyectos

Hay una serie de utilidades que tienen la misma premisa, pero en varios niveles de complejidad/características. Algunas son soluciones genéricas como Hashicorps Vault.

  • Bóveda Dockito
  • Bóveda de Hashicorp
  • docker-ssh-exec
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda