1

我正在尝试运行 docker 命令以通过一行命令实现以下​​步骤。

A) 拉取 docker 映像,
B) 然后启动容器,
C) 将目录从主机卷挂载到启动的容器,
D) 然后在容器内发出扫描命令以捕获报告。

我可以使用此命令实现步骤 a、b 和 c。

$ docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry>

但是对于最后一步 D,即在容器内运行扫描并捕获报告,我无法将该命令添加到上述命令并使其正常工作。

下面的这条命令独立工作,但无法附加到上面的行并使其工作。

<scan> -s python -o ./reports

当给出以下命令时,容器刚刚启动并退出

docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry> <scan> -s python -o ./reports

还做了一些基本搜索并尝试添加一个入口点,如下所示

docker run -d -it --name test -v /root/tools:/var/local <mydocker-image-registry> -- entrypoint <scan> -s python -o ./reports

但这也没有用。刚刚报错docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH": unknown.

期望实现使用单个 docker 命令执行的所有上述 4 个步骤,并且我得到填充有结果的“报告”。

4

1 回答 1

3

由于--entrypoints无法使用<scan> -s python -o ./reports以导致您收到以下错误,因为路径中没有可执行文件。

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH": unknown.

因此,当您收到上述错误时,这里是屏幕截图中的示例以及评论。

在此处输入图像描述

因此,将4选项指定为 docker run 命令的参数命令,而不是过度的入口点。

docker run --rm -dit --name test -v /root/tools:/var/local alpine ash -c "date"

这将打印日期并退出。

如果你想保持它运行,那么你已经修改了一点。

docker run --rm -it --name test alpine ash -c "date; tail -f /dev/null"

这将使容器在不做任何事情的情况下继续运行。

另一个示例可以是 python,在一个命令中打印 hello world。

 docker run --rm -it --name test python:3.6-alpine ash -c "echo \"print('Hello, world ')\" >> ab.py; python ./ab.py"
于 2019-06-25T11:19:31.150 回答