首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将停靠器转换为子组件

将停靠器转换为子组件
EN

Stack Overflow用户
提问于 2019-05-10 20:29:50
回答 2查看 291关注 0票数 9

我有一个码头运行命令:

代码语言:javascript
运行
复制
docker run --rm --name=gitleaks \
   -v "/keys/ssh/values:/root/.ssh"  \
   zricethezav/gitleaks  \
   --ssh-key='bucket' \
   --repo "$line"

我把它转到了这里:

代码语言:javascript
运行
复制
  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工作。

EN

回答 2

Stack Overflow用户

发布于 2019-05-16 13:15:35

问题在于您的第一和第二命令语法。

代码语言:javascript
运行
复制
docker create zricethezav/gitleaks --name=gitleaks 

--name在图像名称之前应该是,否则docker create将把它解释为命令参数,而不是选项标志。

代码语言:javascript
运行
复制
 docker start gitleaks --ssh-key='bucket' --repo "$line"

我知道您希望使用参数-ssh-key和-repo来运行映像,但是使用docker start命令是不可能的。如果希望将这些参数传递给图像运行的进程,则应在图像名称之后将这些参数传递给docker createdocker run命令。

所以你应该做:

代码语言:javascript
运行
复制
# 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

对码头创建的解释:

用法是:

代码语言:javascript
运行
复制
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

其中OPTIONS标志应该在IMAGE之前指定,而IMAGE之后的所有内容都将被解释为COMMANDARG...

当你跑步的时候

代码语言:javascript
运行
复制
docker create zricethezav/gitleaks --name=gitleaks

实际上,您正在将--name=gitleaks传递为COMMAND,它将覆盖默认的图像命令(由CMD在Dockerfile中偶尔提供),您可能希望将其作为OPTIONS传递。例如,如果您运行:

代码语言:javascript
运行
复制
docker create alpine --name=foobar
docker create --name=foobar alpine

docker ps -a输出如下所示:

代码语言:javascript
运行
复制
IMAGE        COMMAND              NAMES
alpine       "/bin/sh"            foobar
alpine       "--name=foobar"      quirky_varahamihira

如果要同时传递OPTIONSCOMMAND,则必须在图像名称之前指定OPTIONS,在图像名称之后指定COMMAND

票数 7
EN

Stack Overflow用户

发布于 2019-05-21 20:01:01

tl;博士理想的翻译是

代码语言:javascript
运行
复制
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不匹配。

代码语言:javascript
运行
复制
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

因此,您需要用图像名称交换选项--name=gitleaks

代码语言:javascript
运行
复制
docker create --name=gitleaks zricethezav/gitleaks

(✓) 2.✓

这将被成功地执行。

(X) 3. docker start gitleaks --ssh-key='bucket' --repo "$line"

这将引发一个错误:

代码语言:javascript
运行
复制
unknown flag: --ssh-key

根据到用法说明 of docker start,不可能将commandargument传递给已经存在的容器。

不过,要克服这个问题,您有两种选择:

  1. --ssh-key='bucket' --repo "$line"附加到docker create --name=gitleaks zricethezav/gitleaks
  2. 或者,如果你觉得无聊,你可以试试

如您所见,我也未能将--rm标志从docker run转换为3个子命令,不确定将其放在何处。

--rm选项对于码头创建是可用的,所以您应该把它放在那里。而且,正如Mihai所提到的,您应该传递您的论点(--ssh-key等)。运行docker create

代码语言:javascript
运行
复制
docker create --rm --name=gitleaks zricethezav/gitleaks --ssh-key='bucket' --repo "$line"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56084451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档