#docker #fluentd
#docker #fluentd
Вопрос:
В настоящее время у меня есть файл Dockerfile со следующей строкой CMD:
CMD ["/bin/bash", "-c", "envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf amp;amp; 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:
Существует две формы команды CMD:
CMD ["executable","param1","param2"]
(форма exec) и
CMD command param1 param2
(форма оболочки)
По сути, вы используете форму exec, где вы должны использовать форму оболочки:
CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf amp;amp; td-agent
И даже лучше:
CMD envsubst < td-agent.conf | tee /etc/td-agent/td-agent.conf amp;amp; exec td-agent
Дополнительная информация: https://docs.docker.com/engine/reference/builder/#/cmd
Комментарии:
1. Я устал делать это изменение, но оно по-прежнему выдает ту же ошибку.