我目前有一个带有以下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
基本上抱怨我没有正确执行命令。奇怪的是,如果我启动容器(通过不执行任何替换),则此命令在容器中执行正常。
我可能做错了什么?
答案 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