我正在尝试运行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个步骤,我会在结果中填充“报告”。
答案 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.
因此,当您遇到上述错误时,这是屏幕快照中的示例以及注释。
因此,将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"