Docker CMD的命令行参数

我想将一个parameter passing给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 

这怎么可以避免?

使用ENTRYPOINT的东西。 任何CMD参数都附加到给定的ENTRYPOINT

所以,如果你更新Dockerfile到:

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

事情应该如你所愿。

另外,因为您不需要$1 ,您应该可以将其更改为:

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

我还没有testing过这个,所以让我知道如果它不起作用。