Tengo este comando de ejecución de la ventana acoplable:
docker run --rm --name=gitleaks \ -v "/keys/ssh/values:/root/.ssh" \ zricethezav/gitleaks \ --ssh-key='bucket' \ --repo "$line"Lo traduje a esto:
docker create zricethezav/gitleaks --name=gitleaks docker cp /keys/ssh/values gitleaks:/root/.ssh docker start gitleaks --ssh-key='bucket' --repo "$line"pero me da este error:
Error: No such container:path: gitleaks:/root unknown flag: --ssh-key
¿Alguien sabe dónde me equivoqué? En última instancia, llamo a docker run desde un contenedor en ejecución y tengo problemas para compartir archivos, por lo que trato de hacer que docker cp funcione.
El problema es con la sintaxis de su primer y segundo comando.
docker create zricethezav/gitleaks --name=gitleaks --name debe estar antes del nombre de la imagen ; de lo contrario, docker create lo interpretará como un argumento de COMANDO en lugar de un indicador de OPCIONES .
docker start gitleaks --ssh-key='bucket' --repo "$line" Entiendo que desea ejecutar la imagen con los parámetros --ssh-key y --repo, sin embargo, no es posible con el comando de docker start . Si desea que estos parámetros pasen al proceso ejecutado por la imagen, debe pasar estos parámetros al comando docker create o docker run después del nombre de la imagen.
Así que deberías hacer:
# Mind the --name before the image name docker create --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line" docker cp /keys/ssh/values gitleaks:/root/.ssh docker start gitleaksExplicaciones para docker create:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...] Donde los indicadores de OPTIONS deben especificarse antes de IMAGE , y todo lo que sigue a IMAGE se interpretará como COMMAND y ARG... .
cuando estas corriendo
docker create zricethezav/gitleaks --name=gitleaks De hecho, está pasando --name=gitleaks como COMMAND , que anulará el comando de imagen predeterminado (el que normalmente proporciona CMD en Dockerfile), donde probablemente desee pasarlo como OPTIONS . Por ejemplo, si ejecuta:
docker create alpine --name=foobar docker create --name=foobar alpine docker ps -a salida se verá así:
IMAGE COMMAND NAMES alpine "/bin/sh" foobar alpine "--name=foobar" quirky_varahamihira Si desea pasar OPTIONS y COMMAND , debe especificar OPTIONS antes del nombre de la imagen y COMMAND después del nombre de la imagen.
Debe usar la ID del contenedor docker, no su nombre para la copia.
El ID se devuelve al crear el contenedor, por lo que:
ID=$(docker create zricethezav/gitleaks --name=gitleaks) docker cp /keys/ssh/values ${ID}:/root/.sshSi ya ha creado el contenedor, puede:
ID=$(docker inspect gitleaks --format="{{.ID}}")Pero, @mihai tiene razón y no estoy seguro de cómo podrá configurar el contenedor para comenzar.
Creo que el enfoque correcto para esto es FROM:gitleaks y crea tu propia imagen (Dockerfile) que agrega tus claves.
La documentación proporciona una explicación para usar un token de GitHub para acceder a repositorios privados:
https://github.com/zricethezav/gitleaks#docker-usage-examples
tl;dr La traducción ideal sería
docker create --rm --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line" docker cp /keys/ssh/values gitleaks:/root/.ssh docker start gitleaks (X) 1. docker create zricethezav/gitleaks --name=gitleaks
Su traducción no coincide con la descripción de uso de docker create .
docker create [OPTIONS] IMAGE [COMMAND] [ARG...] Por lo tanto, debe cambiar su opción --name=gitleaks con el nombre de la imagen:
docker create --name=gitleaks zricethezav/gitleaks (✓) 2. docker cp /keys/ssh/values gitleaks:/root/.ssh
Esto se ejecutará con éxito.
(X) 3. docker start gitleaks --ssh-key='bucket' --repo "$line"
Esto arrojará un error que dice:
unknown flag: --ssh-key De acuerdo con la descripción de uso de docker start , no es posible pasar command ni argument a un contenedor ya existente.
Sin embargo, tiene dos alternativas para superar este problema:
--ssh-key='bucket' --repo "$line" a docker create --name=gitleaks zricethezav/gitleaks
O si estás aburrido, puedes probar esto en su lugar.
como puede ver, tampoco pude traducir el indicador --rm de docker run a los 3 subcomandos, no estoy seguro de dónde poner eso
La opción --rm está disponible para docker create , por lo que debe colocarla allí. Y también, como mencionó Mihai , debe pasar sus argumentos ( --ssh-key etc.) mientras ejecuta docker create :
docker create --rm --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line"