Docker CMD与envsubst和tee

时间:2016-10-06 17:08:02

标签: docker fluentd

我目前有一个带有以下CMD行的Dockerfile:

CMD ["/bin/bash", "-c", "envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && td-agent"]

图像构建正常,但是当我去运行它时会抱怨:

Usage: td-agent [options]
-s, --setup [DIR=/etc/td-agent]  install sample configuration file to the directory
-c, --config PATH                config file path (default: /etc/td-agent/td-agent.conf)
    --dry-run                    Check fluentd setup is correct or not
-p, --plugin DIR                 add plugin directory

基本上抱怨我没有正确执行命令。奇怪的是,如果我启动容器(通过不执行任何替换),则此命令在容器中执行正常。

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

有两种形式的CMD命令:

CMD ["executable","param1","param2"](执行形式)和

CMD command param1 param2(贝壳形式)

基本上,您使用的是exec表单,您应该使用shell表单:

CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && td-agent

甚至更好:

CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf && exec td-agent

更多信息:https://docs.docker.com/engine/reference/builder/#/cmd