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"
我正在尝试 运行 一个 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"