Docker CMD的命令行参数

时间:2015-09-13 20:54:42

标签: docker dockerfile

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

FROM ubuntu:15.04
CMD ["/bin/bash", "-c", "cat", "$1"]

然后我想按如下方式运行:

docker build -t cat_a_file .
docker run -v `pwd`:/data cat_a_file /data/Dockerfile

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

Error response from daemon: Cannot start container 7cfca4: 
[8] System error: exec: "/data/Dockerfile": permission denied

如何避免这种情况?

1 个答案:

答案 0 :(得分:22)

使用ENTRYPOINT这样的内容。任何CMD参数都会附加到给定的ENTRYPOINT

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

FROM ubuntu:15.04
ENTRYPOINT ["/bin/bash", "-c", "cat"]

事情应该如你所愿。

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

FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]

我还没有测试过这些,所以请告诉我它是否有效。