2016-10-06 55 views
0

我現在有一個Dockerfile具有以下CMD行:泊塢窗CMD與envsubst和T

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

有兩種形式的CMD命令的:

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

CMD command param1 param2(殼型)

基本上,要使用的EXEC形式,其中應該使用殼形式:

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

+0

我厭倦了這種變化,但它仍然給出了同樣的錯誤。 –