您的问题出在第一和第二个命令的语法上。
docker create zricethezav/gitleaks --name=gitleaks
--name
应该放在镜像名称之前,否则 docker create
会将其解释为 COMMAND 参数而不是 OPTIONS flag。
docker start gitleaks --ssh-key='bucket' --repo "$line"
我了解您想要使用参数--ssh-key和--repo运行镜像,但是这在docker start
命令中是不可能的。如果您想将这些参数传递给由该镜像运行的进程,请在镜像名称后面通过docker create
或docker run
命令传递这些参数。
因此,您应该执行以下操作:
docker create --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line"
docker cp /keys/ssh/values gitleaks:/root/.ssh
docker start gitleaks
docker create的解释:
docker create
的用法 是:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
在运行时,应该在IMAGE
之前指定OPTIONS
标志,而IMAGE
之后的所有内容都将被解释为COMMAND
和ARG...
。
当您正在运行时
docker create zricethezav/gitleaks --name=gitleaks
实际上,您正在将 --name=gitleaks
作为 COMMAND
传递,这将覆盖默认的镜像命令(通常在 Dockerfile 中由 CMD
提供),而您可能希望将其作为 OPTIONS
传递。例如,如果您运行:
docker create alpine --name=foobar
docker create --name=foobar alpine
docker ps -a
的输出结果如下:
IMAGE COMMAND NAMES
alpine "/bin/sh" foobar
alpine "--name=foobar" quirky_varahamihira
如果想同时传递
OPTIONS
和
COMMAND
,必须在镜像名称前指定
OPTIONS
,在镜像名称后指定
COMMAND
。
--rm
标志从docker run翻译到3个子命令中,不确定应该放在哪里。 - Alexander Mills