我有一个码头运行命令:
docker run --rm --name=gitleaks \
-v "/keys/ssh/values:/root/.ssh" \
zricethezav/gitleaks \
--ssh-key='bucket' \
--repo "$line"
我把它转到了这里:
docker create zricethezav/gitleaks --name=gitleaks
docker cp /keys/ssh/values gitleaks:/root/.ssh
docker start gitleaks --ssh-key='bucket' --repo "$line"
但它给了我一个错误:
错误:没有这样的容器:path:git泄漏:/root未知标志:--ssh-key
有人知道我哪里出了问题吗?最终,我调用了从正在运行的容器中运行的docker,并且在共享文件时遇到了问题,所以我试图让docker cp
工作。
发布于 2019-05-16 13:15:35
问题在于您的第一和第二命令语法。
docker create zricethezav/gitleaks --name=gitleaks
--name
在图像名称之前应该是,否则docker create
将把它解释为命令参数,而不是选项标志。
docker start gitleaks --ssh-key='bucket' --repo "$line"
我知道您希望使用参数-ssh-key和-repo来运行映像,但是使用docker start
命令是不可能的。如果希望将这些参数传递给图像运行的进程,则应在图像名称之后将这些参数传递给docker create
或docker run
命令。
所以你应该做:
# 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 gitleaks
对码头创建的解释:
用法是:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
其中OPTIONS
标志应该在IMAGE
之前指定,而IMAGE
之后的所有内容都将被解释为COMMAND
和ARG...
。
当你跑步的时候
docker create zricethezav/gitleaks --name=gitleaks
实际上,您正在将--name=gitleaks
传递为COMMAND
,它将覆盖默认的图像命令(由CMD
在Dockerfile中偶尔提供),您可能希望将其作为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
。
发布于 2019-05-21 20:01:01
tl;博士理想的翻译是
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
您的翻译与使用描述 of docker create
不匹配。
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
因此,您需要用图像名称交换选项--name=gitleaks
:
docker create --name=gitleaks zricethezav/gitleaks
(✓) 2.✓
这将被成功地执行。
(X) 3. docker start gitleaks --ssh-key='bucket' --repo "$line"
这将引发一个错误:
unknown flag: --ssh-key
根据到用法说明 of docker start
,不可能将command
或argument
传递给已经存在的容器。
不过,要克服这个问题,您有两种选择:
--ssh-key='bucket' --repo "$line"
附加到docker create --name=gitleaks zricethezav/gitleaks
如您所见,我也未能将--rm标志从docker run转换为3个子命令,不确定将其放在何处。
--rm
选项对于码头创建是可用的,所以您应该把它放在那里。而且,正如Mihai所提到的,您应该传递您的论点(--ssh-key
等)。运行docker create
时
docker create --rm --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line"
https://stackoverflow.com/questions/56084451
复制相似问题