Docker CMD 的命令行参数

问题描述 投票:0回答:1

我想将参数传递到 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

如何避免这种情况?

docker dockerfile docker-cmd
1个回答
47
投票

使用

ENTRYPOINT
来处理类似的事情。任何
CMD
参数都会附加到给定的
ENTRYPOINT

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

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

事情应该如你所愿。

此外,由于您不需要

$1
,您应该能够将其更改为:

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

我还没有测试过这些,所以如果不起作用请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.