Docker 运行命令,一行命令实现几个步骤

Docker run command to achieve few steps with a single line of command

我正在尝试 运行 一个 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 个步骤,我得到 'reports' 填充的结果。

由于 --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 运行 命令的参数命令。

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

这将打印日期并退出。

如果你想保留它运行ning,那么你稍微修改了一下。

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"