Docker CMD的命令行参数

use*_*717 22 docker dockerfile

我想将参数传递给docker CMD.例如,如果内容Dockerfile

FROM ubuntu:15.04
CMD ["/bin/bash", "-c", "cat", "$1"]
Run Code Online (Sandbox Code Playgroud)

然后我想运行如下:

docker build -t cat_a_file .
docker run -v `pwd`:/data cat_a_file /data/Dockerfile
Run Code Online (Sandbox Code Playgroud)

我想将内容Dockerfile打印到屏幕上.但相反,Docker认为这/data/Dockerfile是一个应该覆盖的脚本CMD,给出了错误

Error response from daemon: Cannot start container 7cfca4: 
[8] System error: exec: "/data/Dockerfile": permission denied
Run Code Online (Sandbox Code Playgroud)

如何避免这种情况?

Adr*_*uat 26

使用ENTRYPOINT像这样的东西.任何CMD参数都附加到给定的ENTRYPOINT.

因此,如果您将Dockerfile更新为:

FROM ubuntu:15.04
ENTRYPOINT ["/bin/bash", "-c", "cat"]
Run Code Online (Sandbox Code Playgroud)

事情应该按照你的意愿行事.

此外,由于您不需要$1,您应该能够将其更改为:

FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]
Run Code Online (Sandbox Code Playgroud)

我没有测试任何这个,所以如果它不起作用,请告诉我.