Docker运行命令以单行命令实现几步操作

时间:2019-06-25 10:59:37

标签: docker docker-run docker-entrypoint

我正在尝试运行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个步骤,我会在结果中填充“报告”。

1 个答案:

答案 0 :(得分:1)

由于--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.

因此,当您遇到上述错误时,这是​​屏幕快照中的示例以及注释。

enter image description here

因此,将docker run命令的 4 选项指定为自变量命令,而不是覆盖入口点。

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,它可以在一个命令中打印问候世界。

 docker run --rm -it --name test python:3.6-alpine ash -c "echo \"print('Hello, world ')\" >> ab.py; python ./ab.py"