我想将参数传递给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
如何避免这种情况?
答案 0 :(得分:22)
使用ENTRYPOINT
这样的内容。任何CMD
参数都会附加到给定的ENTRYPOINT
。
因此,如果您将Dockerfile更新为:
FROM ubuntu:15.04
ENTRYPOINT ["/bin/bash", "-c", "cat"]
事情应该如你所愿。
此外,由于您不需要$1
,您应该可以将其更改为:
FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]
我还没有测试过这些,所以请告诉我它是否有效。